1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gtk.c.types;
26 
27 public import cairo.c.types;
28 public import gdk.c.types;
29 public import gdkpixbuf.c.types;
30 public import gio.c.types;
31 public import glib.c.types;
32 public import gobject.c.types;
33 public import graphene.c.types;
34 public import gsk.c.types;
35 public import pango.c.types;
36 
37 
38 /**
39  * The rectangle representing the area allocated for a widget by its parent.
40  */
41 public alias GdkRectangle GtkAllocation;
42 
43 /**
44  * The possible values for the %GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE
45  * accessible property.
46  */
47 public enum GtkAccessibleAutocomplete
48 {
49 	/**
50 	 * Automatic suggestions are not displayed.
51 	 */
52 	NONE = 0,
53 	/**
54 	 * When a user is providing input, text
55 	 * suggesting one way to complete the provided input may be dynamically
56 	 * inserted after the caret.
57 	 */
58 	INLINE = 1,
59 	/**
60 	 * When a user is providing input, an element
61 	 * containing a collection of values that could complete the provided input
62 	 * may be displayed.
63 	 */
64 	LIST = 2,
65 	/**
66 	 * When a user is providing input, an element
67 	 * containing a collection of values that could complete the provided input
68 	 * may be displayed. If displayed, one value in the collection is automatically
69 	 * selected, and the text needed to complete the automatically selected value
70 	 * appears after the caret in the input.
71 	 */
72 	BOTH = 3,
73 }
74 alias GtkAccessibleAutocomplete AccessibleAutocomplete;
75 
76 /**
77  * The possible values for the %GTK_ACCESSIBLE_STATE_INVALID
78  * accessible state.
79  *
80  * Note that the %GTK_ACCESSIBLE_INVALID_FALSE and
81  * %GTK_ACCESSIBLE_INVALID_TRUE have the same values
82  * as %FALSE and %TRUE.
83  */
84 public enum GtkAccessibleInvalidState
85 {
86 	/**
87 	 * There are no detected errors in the value
88 	 */
89 	FALSE = 0,
90 	/**
91 	 * The value entered by the user has failed validation
92 	 */
93 	TRUE = 1,
94 	/**
95 	 * A grammatical error was detected
96 	 */
97 	GRAMMAR = 2,
98 	/**
99 	 * A spelling error was detected
100 	 */
101 	SPELLING = 3,
102 }
103 alias GtkAccessibleInvalidState AccessibleInvalidState;
104 
105 /**
106  * The possible accessible properties of a [iface@Accessible].
107  */
108 public enum GtkAccessibleProperty
109 {
110 	/**
111 	 * Indicates whether inputting text
112 	 * could trigger display of one or more predictions of the user's intended
113 	 * value for a combobox, searchbox, or textbox and specifies how predictions
114 	 * would be presented if they were made. Value type: [enum@AccessibleAutocomplete]
115 	 */
116 	AUTOCOMPLETE = 0,
117 	/**
118 	 * Defines a string value that describes
119 	 * or annotates the current element. Value type: string
120 	 */
121 	DESCRIPTION = 1,
122 	/**
123 	 * Indicates the availability and type of
124 	 * interactive popup element, such as menu or dialog, that can be triggered
125 	 * by an element.
126 	 */
127 	HAS_POPUP = 2,
128 	/**
129 	 * Indicates keyboard shortcuts that an
130 	 * author has implemented to activate or give focus to an element. Value type:
131 	 * string
132 	 */
133 	KEY_SHORTCUTS = 3,
134 	/**
135 	 * Defines a string value that labels the current
136 	 * element. Value type: string
137 	 */
138 	LABEL = 4,
139 	/**
140 	 * Defines the hierarchical level of an element
141 	 * within a structure. Value type: integer
142 	 */
143 	LEVEL = 5,
144 	/**
145 	 * Indicates whether an element is modal when
146 	 * displayed. Value type: boolean
147 	 */
148 	MODAL = 6,
149 	/**
150 	 * Indicates whether a text box accepts
151 	 * multiple lines of input or only a single line. Value type: boolean
152 	 */
153 	MULTI_LINE = 7,
154 	/**
155 	 * Indicates that the user may select
156 	 * more than one item from the current selectable descendants. Value type:
157 	 * boolean
158 	 */
159 	MULTI_SELECTABLE = 8,
160 	/**
161 	 * Indicates whether the element's
162 	 * orientation is horizontal, vertical, or unknown/ambiguous. Value type:
163 	 * [enum@Orientation]
164 	 */
165 	ORIENTATION = 9,
166 	/**
167 	 * Defines a short hint (a word or short
168 	 * phrase) intended to aid the user with data entry when the control has no
169 	 * value. A hint could be a sample value or a brief description of the expected
170 	 * format. Value type: string
171 	 */
172 	PLACEHOLDER = 10,
173 	/**
174 	 * Indicates that the element is not editable,
175 	 * but is otherwise operable. Value type: boolean
176 	 */
177 	READ_ONLY = 11,
178 	/**
179 	 * Indicates that user input is required on
180 	 * the element before a form may be submitted. Value type: boolean
181 	 */
182 	REQUIRED = 12,
183 	/**
184 	 * Defines a human-readable,
185 	 * author-localized description for the role of an element. Value type: string
186 	 */
187 	ROLE_DESCRIPTION = 13,
188 	/**
189 	 * Indicates if items in a table or grid are
190 	 * sorted in ascending or descending order. Value type: [enum@AccessibleSort]
191 	 */
192 	SORT = 14,
193 	/**
194 	 * Defines the maximum allowed value for a
195 	 * range widget. Value type: double
196 	 */
197 	VALUE_MAX = 15,
198 	/**
199 	 * Defines the minimum allowed value for a
200 	 * range widget. Value type: double
201 	 */
202 	VALUE_MIN = 16,
203 	/**
204 	 * Defines the current value for a range widget.
205 	 * Value type: double
206 	 */
207 	VALUE_NOW = 17,
208 	/**
209 	 * Defines the human readable text alternative
210 	 * of aria-valuenow for a range widget. Value type: string
211 	 */
212 	VALUE_TEXT = 18,
213 }
214 alias GtkAccessibleProperty AccessibleProperty;
215 
216 /**
217  * The possible accessible relations of a [iface@Accessible].
218  *
219  * Accessible relations can be references to other widgets,
220  * integers or strings.
221  */
222 public enum GtkAccessibleRelation
223 {
224 	/**
225 	 * Identifies the currently active
226 	 * element when focus is on a composite widget, combobox, textbox, group,
227 	 * or application. Value type: reference
228 	 */
229 	ACTIVE_DESCENDANT = 0,
230 	/**
231 	 * Defines the total number of columns
232 	 * in a table, grid, or treegrid. Value type: integer
233 	 */
234 	COL_COUNT = 1,
235 	/**
236 	 * Defines an element's column index or
237 	 * position with respect to the total number of columns within a table,
238 	 * grid, or treegrid. Value type: integer
239 	 */
240 	COL_INDEX = 2,
241 	/**
242 	 * Defines a human readable text
243 	 * alternative of %GTK_ACCESSIBLE_RELATION_COL_INDEX. Value type: string
244 	 */
245 	COL_INDEX_TEXT = 3,
246 	/**
247 	 * Defines the number of columns spanned
248 	 * by a cell or gridcell within a table, grid, or treegrid. Value type: integer
249 	 */
250 	COL_SPAN = 4,
251 	/**
252 	 * Identifies the element (or elements) whose
253 	 * contents or presence are controlled by the current element. Value type: reference
254 	 */
255 	CONTROLS = 5,
256 	/**
257 	 * Identifies the element (or elements)
258 	 * that describes the object. Value type: reference
259 	 */
260 	DESCRIBED_BY = 6,
261 	/**
262 	 * Identifies the element (or elements) that
263 	 * provide additional information related to the object. Value type: reference
264 	 */
265 	DETAILS = 7,
266 	/**
267 	 * Identifies the element that provides
268 	 * an error message for an object. Value type: reference
269 	 */
270 	ERROR_MESSAGE = 8,
271 	/**
272 	 * Identifies the next element (or elements)
273 	 * in an alternate reading order of content which, at the user's discretion,
274 	 * allows assistive technology to override the general default of reading in
275 	 * document source order. Value type: reference
276 	 */
277 	FLOW_TO = 9,
278 	/**
279 	 * Identifies the element (or elements)
280 	 * that labels the current element. Value type: reference
281 	 */
282 	LABELLED_BY = 10,
283 	/**
284 	 * Identifies an element (or elements) in order
285 	 * to define a visual, functional, or contextual parent/child relationship
286 	 * between elements where the widget hierarchy cannot be used to represent
287 	 * the relationship. Value type: reference
288 	 */
289 	OWNS = 11,
290 	/**
291 	 * Defines an element's number or position
292 	 * in the current set of listitems or treeitems. Value type: integer
293 	 */
294 	POS_IN_SET = 12,
295 	/**
296 	 * Defines the total number of rows in a table,
297 	 * grid, or treegrid. Value type: integer
298 	 */
299 	ROW_COUNT = 13,
300 	/**
301 	 * Defines an element's row index or position
302 	 * with respect to the total number of rows within a table, grid, or treegrid.
303 	 * Value type: integer
304 	 */
305 	ROW_INDEX = 14,
306 	/**
307 	 * Defines a human readable text
308 	 * alternative of aria-rowindex. Value type: string
309 	 */
310 	ROW_INDEX_TEXT = 15,
311 	/**
312 	 * Defines the number of rows spanned by a
313 	 * cell or gridcell within a table, grid, or treegrid. Value type: integer
314 	 */
315 	ROW_SPAN = 16,
316 	/**
317 	 * Defines the number of items in the current
318 	 * set of listitems or treeitems. Value type: integer
319 	 */
320 	SET_SIZE = 17,
321 }
322 alias GtkAccessibleRelation AccessibleRelation;
323 
324 /**
325  * The accessible role for a [iface@Accessible] implementation.
326  *
327  * Abstract roles are only used as part of the ontology; application
328  * developers must not use abstract roles in their code.
329  */
330 public enum GtkAccessibleRole
331 {
332 	/**
333 	 * An element with important, and usually
334 	 * time-sensitive, information
335 	 */
336 	ALERT = 0,
337 	/**
338 	 * A type of dialog that contains an
339 	 * alert message
340 	 */
341 	ALERT_DIALOG = 1,
342 	/**
343 	 * Unused
344 	 */
345 	BANNER = 2,
346 	/**
347 	 * An input element that allows for
348 	 * user-triggered actions when clicked or pressed
349 	 */
350 	BUTTON = 3,
351 	/**
352 	 * Unused
353 	 */
354 	CAPTION = 4,
355 	/**
356 	 * Unused
357 	 */
358 	CELL = 5,
359 	/**
360 	 * A checkable input element that has
361 	 * three possible values: `true`, `false`, or `mixed`
362 	 */
363 	CHECKBOX = 6,
364 	/**
365 	 * A header in a columned list.
366 	 */
367 	COLUMN_HEADER = 7,
368 	/**
369 	 * An input that controls another element,
370 	 * such as a list or a grid, that can dynamically pop up to help the user
371 	 * set the value of the input
372 	 */
373 	COMBO_BOX = 8,
374 	/**
375 	 * Abstract role.
376 	 */
377 	COMMAND = 9,
378 	/**
379 	 * Abstract role.
380 	 */
381 	COMPOSITE = 10,
382 	/**
383 	 * A dialog is a window that is designed to interrupt
384 	 * the current processing of an application in order to prompt the user to enter
385 	 * information or require a response.
386 	 */
387 	DIALOG = 11,
388 	/**
389 	 * Unused
390 	 */
391 	DOCUMENT = 12,
392 	/**
393 	 * Unused
394 	 */
395 	FEED = 13,
396 	/**
397 	 * Unused
398 	 */
399 	FORM = 14,
400 	/**
401 	 * Unused
402 	 */
403 	GENERIC = 15,
404 	/**
405 	 * A grid of items.
406 	 */
407 	GRID = 16,
408 	/**
409 	 * An item in a grid or tree grid.
410 	 */
411 	GRID_CELL = 17,
412 	/**
413 	 * An element that groups multiple widgets. GTK uses
414 	 * this role for various containers, like [class@Box], [class@Viewport], and [class@HeaderBar].
415 	 */
416 	GROUP = 18,
417 	/**
418 	 * Unused
419 	 */
420 	HEADING = 19,
421 	/**
422 	 * An image.
423 	 */
424 	IMG = 20,
425 	/**
426 	 * Abstract role.
427 	 */
428 	INPUT = 21,
429 	/**
430 	 * A visible name or caption for a user interface component.
431 	 */
432 	LABEL = 22,
433 	/**
434 	 * Abstract role.
435 	 */
436 	LANDMARK = 23,
437 	/**
438 	 * Unused
439 	 */
440 	LEGEND = 24,
441 	/**
442 	 * A clickable link.
443 	 */
444 	LINK = 25,
445 	/**
446 	 * A list of items.
447 	 */
448 	LIST = 26,
449 	/**
450 	 * Unused.
451 	 */
452 	LIST_BOX = 27,
453 	/**
454 	 * An item in a list.
455 	 */
456 	LIST_ITEM = 28,
457 	/**
458 	 * Unused
459 	 */
460 	LOG = 29,
461 	/**
462 	 * Unused
463 	 */
464 	MAIN = 30,
465 	/**
466 	 * Unused
467 	 */
468 	MARQUEE = 31,
469 	/**
470 	 * Unused
471 	 */
472 	MATH = 32,
473 	/**
474 	 * An element that represents a value within a known range.
475 	 */
476 	METER = 33,
477 	/**
478 	 * A menu.
479 	 */
480 	MENU = 34,
481 	/**
482 	 * A menubar.
483 	 */
484 	MENU_BAR = 35,
485 	/**
486 	 * An item in a menu.
487 	 */
488 	MENU_ITEM = 36,
489 	/**
490 	 * A check item in a menu.
491 	 */
492 	MENU_ITEM_CHECKBOX = 37,
493 	/**
494 	 * A radio item in a menu.
495 	 */
496 	MENU_ITEM_RADIO = 38,
497 	/**
498 	 * Unused
499 	 */
500 	NAVIGATION = 39,
501 	/**
502 	 * An element that is not represented to accessibility technologies.
503 	 */
504 	NONE = 40,
505 	/**
506 	 * Unused
507 	 */
508 	NOTE = 41,
509 	/**
510 	 * Unused
511 	 */
512 	OPTION = 42,
513 	/**
514 	 * An element that is not represented to accessibility technologies.
515 	 */
516 	PRESENTATION = 43,
517 	/**
518 	 * An element that displays the progress
519 	 * status for tasks that take a long time.
520 	 */
521 	PROGRESS_BAR = 44,
522 	/**
523 	 * A checkable input in a group of radio roles,
524 	 * only one of which can be checked at a time.
525 	 */
526 	RADIO = 45,
527 	/**
528 	 * Unused
529 	 */
530 	RADIO_GROUP = 46,
531 	/**
532 	 * Abstract role.
533 	 */
534 	RANGE = 47,
535 	/**
536 	 * Unused
537 	 */
538 	REGION = 48,
539 	/**
540 	 * A row in a columned list.
541 	 */
542 	ROW = 49,
543 	/**
544 	 * Unused
545 	 */
546 	ROW_GROUP = 50,
547 	/**
548 	 * Unused
549 	 */
550 	ROW_HEADER = 51,
551 	/**
552 	 * A graphical object that controls the scrolling
553 	 * of content within a viewing area, regardless of whether the content is fully
554 	 * displayed within the viewing area.
555 	 */
556 	SCROLLBAR = 52,
557 	/**
558 	 * Unused
559 	 */
560 	SEARCH = 53,
561 	/**
562 	 * A type of textbox intended for specifying
563 	 * search criteria.
564 	 */
565 	SEARCH_BOX = 54,
566 	/**
567 	 * Abstract role.
568 	 */
569 	SECTION = 55,
570 	/**
571 	 * Abstract role.
572 	 */
573 	SECTION_HEAD = 56,
574 	/**
575 	 * Abstract role.
576 	 */
577 	SELECT = 57,
578 	/**
579 	 * A divider that separates and distinguishes
580 	 * sections of content or groups of menuitems.
581 	 */
582 	SEPARATOR = 58,
583 	/**
584 	 * A user input where the user selects a value
585 	 * from within a given range.
586 	 */
587 	SLIDER = 59,
588 	/**
589 	 * A form of range that expects the user to
590 	 * select from among discrete choices.
591 	 */
592 	SPIN_BUTTON = 60,
593 	/**
594 	 * Unused
595 	 */
596 	STATUS = 61,
597 	/**
598 	 * Abstract role.
599 	 */
600 	STRUCTURE = 62,
601 	/**
602 	 * A type of checkbox that represents on/off values,
603 	 * as opposed to checked/unchecked values.
604 	 */
605 	SWITCH = 63,
606 	/**
607 	 * An item in a list of tab used for switching pages.
608 	 */
609 	TAB = 64,
610 	/**
611 	 * Unused
612 	 */
613 	TABLE = 65,
614 	/**
615 	 * A list of tabs for switching pages.
616 	 */
617 	TAB_LIST = 66,
618 	/**
619 	 * A page in a notebook or stack.
620 	 */
621 	TAB_PANEL = 67,
622 	/**
623 	 * A type of input that allows free-form text
624 	 * as its value.
625 	 */
626 	TEXT_BOX = 68,
627 	/**
628 	 * Unused
629 	 */
630 	TIME = 69,
631 	/**
632 	 * Unused
633 	 */
634 	TIMER = 70,
635 	/**
636 	 * Unused
637 	 */
638 	TOOLBAR = 71,
639 	/**
640 	 * Unused
641 	 */
642 	TOOLTIP = 72,
643 	/**
644 	 * Unused
645 	 */
646 	TREE = 73,
647 	/**
648 	 * A treeview-like, columned list.
649 	 */
650 	TREE_GRID = 74,
651 	/**
652 	 * Unused
653 	 */
654 	TREE_ITEM = 75,
655 	/**
656 	 * An interactive component of a graphical user
657 	 * interface. This is the role that GTK uses by default for widgets.
658 	 */
659 	WIDGET = 76,
660 	/**
661 	 * An application window.
662 	 */
663 	WINDOW = 77,
664 }
665 alias GtkAccessibleRole AccessibleRole;
666 
667 /**
668  * The possible values for the %GTK_ACCESSIBLE_PROPERTY_SORT
669  * accessible property.
670  */
671 public enum GtkAccessibleSort
672 {
673 	/**
674 	 * There is no defined sort applied to the column.
675 	 */
676 	NONE = 0,
677 	/**
678 	 * Items are sorted in ascending order by this column.
679 	 */
680 	ASCENDING = 1,
681 	/**
682 	 * Items are sorted in descending order by this column.
683 	 */
684 	DESCENDING = 2,
685 	/**
686 	 * A sort algorithm other than ascending or
687 	 * descending has been applied.
688 	 */
689 	OTHER = 3,
690 }
691 alias GtkAccessibleSort AccessibleSort;
692 
693 /**
694  * The possible accessible states of a [iface@Accessible].
695  */
696 public enum GtkAccessibleState
697 {
698 	/**
699 	 * A “busy” state. This state has boolean values
700 	 */
701 	BUSY = 0,
702 	/**
703 	 * A “checked” state; indicates the current
704 	 * state of a [class@CheckButton]. Value type: [enum@AccessibleTristate]
705 	 */
706 	CHECKED = 1,
707 	/**
708 	 * A “disabled” state; corresponds to the
709 	 * [property@Widget:sensitive] property. It indicates a UI element
710 	 * that is perceivable, but not editable or operable. Value type: boolean
711 	 */
712 	DISABLED = 2,
713 	/**
714 	 * An “expanded” state; corresponds to the
715 	 * [property@Expander:expanded] property. Value type: boolean
716 	 * or undefined
717 	 */
718 	EXPANDED = 3,
719 	/**
720 	 * A “hidden” state; corresponds to the
721 	 * [property@Widget:visible] property. You can use this state
722 	 * explicitly on UI elements that should not be exposed to an assistive
723 	 * technology. Value type: boolean
724 	 * See also: %GTK_ACCESSIBLE_STATE_DISABLED
725 	 */
726 	HIDDEN = 4,
727 	/**
728 	 * An “invalid” state; set when a widget
729 	 * is showing an error. Value type: [enum@AccessibleInvalidState]
730 	 */
731 	INVALID = 5,
732 	/**
733 	 * A “pressed” state; indicates the current
734 	 * state of a [class@ToggleButton]. Value type: [enum@AccessibleTristate]
735 	 * enumeration
736 	 */
737 	PRESSED = 6,
738 	/**
739 	 * A “selected” state; set when a widget
740 	 * is selected. Value type: boolean or undefined
741 	 */
742 	SELECTED = 7,
743 }
744 alias GtkAccessibleState AccessibleState;
745 
746 /**
747  * The possible values for the %GTK_ACCESSIBLE_STATE_PRESSED
748  * accessible state.
749  *
750  * Note that the %GTK_ACCESSIBLE_TRISTATE_FALSE and
751  * %GTK_ACCESSIBLE_TRISTATE_TRUE have the same values
752  * as %FALSE and %TRUE.
753  */
754 public enum GtkAccessibleTristate
755 {
756 	/**
757 	 * The state is `false`
758 	 */
759 	FALSE = 0,
760 	/**
761 	 * The state is `true`
762 	 */
763 	TRUE = 1,
764 	/**
765 	 * The state is `mixed`
766 	 */
767 	MIXED = 2,
768 }
769 alias GtkAccessibleTristate AccessibleTristate;
770 
771 /**
772  * Controls how a widget deals with extra space in a single dimension.
773  *
774  * Alignment only matters if the widget receives a “too large” allocation,
775  * for example if you packed the widget with the [property@Gtk.Widget:hexpand]
776  * property inside a [class@Box], then the widget might get extra space.
777  * If you have for example a 16x16 icon inside a 32x32 space, the icon
778  * could be scaled and stretched, it could be centered, or it could be
779  * positioned to one side of the space.
780  *
781  * Note that in horizontal context %GTK_ALIGN_START and %GTK_ALIGN_END
782  * are interpreted relative to text direction.
783  *
784  * %GTK_ALIGN_BASELINE support is optional for containers and widgets, and
785  * it is only supported for vertical alignment.  When it's not supported by
786  * a child or a container it is treated as %GTK_ALIGN_FILL.
787  */
788 public enum GtkAlign
789 {
790 	/**
791 	 * stretch to fill all space if possible, center if
792 	 * no meaningful way to stretch
793 	 */
794 	FILL = 0,
795 	/**
796 	 * snap to left or top side, leaving space on right or bottom
797 	 */
798 	START = 1,
799 	/**
800 	 * snap to right or bottom side, leaving space on left or top
801 	 */
802 	END = 2,
803 	/**
804 	 * center natural width of widget inside the allocation
805 	 */
806 	CENTER = 3,
807 	/**
808 	 * align the widget according to the baseline.
809 	 * See [class@Gtk.Widget].
810 	 */
811 	BASELINE = 4,
812 }
813 alias GtkAlign Align;
814 
815 /**
816  * Types of user actions that may be blocked by `GtkApplication`.
817  *
818  * See [method@Gtk.Application.inhibit].
819  */
820 public enum GtkApplicationInhibitFlags
821 {
822 	/**
823 	 * Inhibit ending the user session
824 	 * by logging out or by shutting down the computer
825 	 */
826 	LOGOUT = 1,
827 	/**
828 	 * Inhibit user switching
829 	 */
830 	SWITCH = 2,
831 	/**
832 	 * Inhibit suspending the
833 	 * session or computer
834 	 */
835 	SUSPEND = 4,
836 	/**
837 	 * Inhibit the session being
838 	 * marked as idle (and possibly locked)
839 	 */
840 	IDLE = 8,
841 }
842 alias GtkApplicationInhibitFlags ApplicationInhibitFlags;
843 
844 /**
845  * Used to indicate the direction in which an arrow should point.
846  */
847 public enum GtkArrowType
848 {
849 	/**
850 	 * Represents an upward pointing arrow.
851 	 */
852 	UP = 0,
853 	/**
854 	 * Represents a downward pointing arrow.
855 	 */
856 	DOWN = 1,
857 	/**
858 	 * Represents a left pointing arrow.
859 	 */
860 	LEFT = 2,
861 	/**
862 	 * Represents a right pointing arrow.
863 	 */
864 	RIGHT = 3,
865 	/**
866 	 * No arrow.
867 	 */
868 	NONE = 4,
869 }
870 alias GtkArrowType ArrowType;
871 
872 /**
873  * Determines the page role inside a `GtkAssistant`.
874  *
875  * The role is used to handle buttons sensitivity and visibility.
876  *
877  * Note that an assistant needs to end its page flow with a page of type
878  * %GTK_ASSISTANT_PAGE_CONFIRM, %GTK_ASSISTANT_PAGE_SUMMARY or
879  * %GTK_ASSISTANT_PAGE_PROGRESS to be correct.
880  *
881  * The Cancel button will only be shown if the page isn’t “committed”.
882  * See gtk_assistant_commit() for details.
883  */
884 public enum GtkAssistantPageType
885 {
886 	/**
887 	 * The page has regular contents. Both the
888 	 * Back and forward buttons will be shown.
889 	 */
890 	CONTENT = 0,
891 	/**
892 	 * The page contains an introduction to the
893 	 * assistant task. Only the Forward button will be shown if there is a
894 	 * next page.
895 	 */
896 	INTRO = 1,
897 	/**
898 	 * The page lets the user confirm or deny the
899 	 * changes. The Back and Apply buttons will be shown.
900 	 */
901 	CONFIRM = 2,
902 	/**
903 	 * The page informs the user of the changes
904 	 * done. Only the Close button will be shown.
905 	 */
906 	SUMMARY = 3,
907 	/**
908 	 * Used for tasks that take a long time to
909 	 * complete, blocks the assistant until the page is marked as complete.
910 	 * Only the back button will be shown.
911 	 */
912 	PROGRESS = 4,
913 	/**
914 	 * Used for when other page types are not
915 	 * appropriate. No buttons will be shown, and the application must
916 	 * add its own buttons through gtk_assistant_add_action_widget().
917 	 */
918 	CUSTOM = 5,
919 }
920 alias GtkAssistantPageType AssistantPageType;
921 
922 /**
923  * Baseline position in a row of widgets.
924  *
925  * Whenever a container has some form of natural row it may align
926  * children in that row along a common typographical baseline. If
927  * the amount of vertical space in the row is taller than the total
928  * requested height of the baseline-aligned children then it can use a
929  * `GtkBaselinePosition` to select where to put the baseline inside the
930  * extra available space.
931  */
932 public enum GtkBaselinePosition
933 {
934 	/**
935 	 * Align the baseline at the top
936 	 */
937 	TOP = 0,
938 	/**
939 	 * Center the baseline
940 	 */
941 	CENTER = 1,
942 	/**
943 	 * Align the baseline at the bottom
944 	 */
945 	BOTTOM = 2,
946 }
947 alias GtkBaselinePosition BaselinePosition;
948 
949 /**
950  * Describes how the border of a UI element should be rendered.
951  */
952 public enum GtkBorderStyle
953 {
954 	/**
955 	 * No visible border
956 	 */
957 	NONE = 0,
958 	/**
959 	 * Same as %GTK_BORDER_STYLE_NONE
960 	 */
961 	HIDDEN = 1,
962 	/**
963 	 * A single line segment
964 	 */
965 	SOLID = 2,
966 	/**
967 	 * Looks as if the content is sunken into the canvas
968 	 */
969 	INSET = 3,
970 	/**
971 	 * Looks as if the content is coming out of the canvas
972 	 */
973 	OUTSET = 4,
974 	/**
975 	 * A series of round dots
976 	 */
977 	DOTTED = 5,
978 	/**
979 	 * A series of square-ended dashes
980 	 */
981 	DASHED = 6,
982 	/**
983 	 * Two parallel lines with some space between them
984 	 */
985 	DOUBLE = 7,
986 	/**
987 	 * Looks as if it were carved in the canvas
988 	 */
989 	GROOVE = 8,
990 	/**
991 	 * Looks as if it were coming out of the canvas
992 	 */
993 	RIDGE = 9,
994 }
995 alias GtkBorderStyle BorderStyle;
996 
997 /**
998  * The list of flags that can be passed to gtk_builder_create_closure().
999  *
1000  * New values may be added in the future for new features, so external
1001  * implementations of [iface@Gtk.BuilderScope] should test the flags
1002  * for unknown values and raise a %GTK_BUILDER_ERROR_INVALID_ATTRIBUTE error
1003  * when they encounter one.
1004  */
1005 public enum GtkBuilderClosureFlags
1006 {
1007 	/**
1008 	 * The closure should be created swapped. See
1009 	 * g_cclosure_new_swap() for details.
1010 	 */
1011 	SWAPPED = 1,
1012 }
1013 alias GtkBuilderClosureFlags BuilderClosureFlags;
1014 
1015 /**
1016  * Error codes that identify various errors that can occur while using
1017  * `GtkBuilder`.
1018  */
1019 public enum GtkBuilderError
1020 {
1021 	/**
1022 	 * A type-func attribute didn’t name
1023 	 * a function that returns a `GType`.
1024 	 */
1025 	INVALID_TYPE_FUNCTION = 0,
1026 	/**
1027 	 * The input contained a tag that `GtkBuilder`
1028 	 * can’t handle.
1029 	 */
1030 	UNHANDLED_TAG = 1,
1031 	/**
1032 	 * An attribute that is required by
1033 	 * `GtkBuilder` was missing.
1034 	 */
1035 	MISSING_ATTRIBUTE = 2,
1036 	/**
1037 	 * `GtkBuilder` found an attribute that
1038 	 * it doesn’t understand.
1039 	 */
1040 	INVALID_ATTRIBUTE = 3,
1041 	/**
1042 	 * `GtkBuilder` found a tag that
1043 	 * it doesn’t understand.
1044 	 */
1045 	INVALID_TAG = 4,
1046 	/**
1047 	 * A required property value was
1048 	 * missing.
1049 	 */
1050 	MISSING_PROPERTY_VALUE = 5,
1051 	/**
1052 	 * `GtkBuilder` couldn’t parse
1053 	 * some attribute value.
1054 	 */
1055 	INVALID_VALUE = 6,
1056 	/**
1057 	 * The input file requires a newer version
1058 	 * of GTK.
1059 	 */
1060 	VERSION_MISMATCH = 7,
1061 	/**
1062 	 * An object id occurred twice.
1063 	 */
1064 	DUPLICATE_ID = 8,
1065 	/**
1066 	 * A specified object type is of the same type or
1067 	 * derived from the type of the composite class being extended with builder XML.
1068 	 */
1069 	OBJECT_TYPE_REFUSED = 9,
1070 	/**
1071 	 * The wrong type was specified in a composite class’s template XML
1072 	 */
1073 	TEMPLATE_MISMATCH = 10,
1074 	/**
1075 	 * The specified property is unknown for the object class.
1076 	 */
1077 	INVALID_PROPERTY = 11,
1078 	/**
1079 	 * The specified signal is unknown for the object class.
1080 	 */
1081 	INVALID_SIGNAL = 12,
1082 	/**
1083 	 * An object id is unknown.
1084 	 */
1085 	INVALID_ID = 13,
1086 	/**
1087 	 * A function could not be found. This often happens
1088 	 * when symbols are set to be kept private. Compiling code with -rdynamic or using the
1089 	 * `gmodule-export-2.0` pkgconfig module can fix this problem.
1090 	 */
1091 	INVALID_FUNCTION = 14,
1092 }
1093 alias GtkBuilderError BuilderError;
1094 
1095 /**
1096  * Prebuilt sets of buttons for `GtkDialog`.
1097  *
1098  * If none of these choices are appropriate, simply use
1099  * %GTK_BUTTONS_NONE and call [method@Gtk.Dialog.add_buttons].
1100  *
1101  * > Please note that %GTK_BUTTONS_OK, %GTK_BUTTONS_YES_NO
1102  * > and %GTK_BUTTONS_OK_CANCEL are discouraged by the
1103  * > [GNOME Human Interface Guidelines](http://library.gnome.org/devel/hig-book/stable/).
1104  */
1105 public enum GtkButtonsType
1106 {
1107 	/**
1108 	 * no buttons at all
1109 	 */
1110 	NONE = 0,
1111 	/**
1112 	 * an OK button
1113 	 */
1114 	OK = 1,
1115 	/**
1116 	 * a Close button
1117 	 */
1118 	CLOSE = 2,
1119 	/**
1120 	 * a Cancel button
1121 	 */
1122 	CANCEL = 3,
1123 	/**
1124 	 * Yes and No buttons
1125 	 */
1126 	YES_NO = 4,
1127 	/**
1128 	 * OK and Cancel buttons
1129 	 */
1130 	OK_CANCEL = 5,
1131 }
1132 alias GtkButtonsType ButtonsType;
1133 
1134 /**
1135  * The available modes for [property@Gtk.CellRendererAccel:accel-mode].
1136  */
1137 public enum GtkCellRendererAccelMode
1138 {
1139 	/**
1140 	 * GTK accelerators mode
1141 	 */
1142 	GTK = 0,
1143 	/**
1144 	 * Other accelerator mode
1145 	 */
1146 	OTHER = 1,
1147 }
1148 alias GtkCellRendererAccelMode CellRendererAccelMode;
1149 
1150 /**
1151  * Identifies how the user can interact with a particular cell.
1152  */
1153 public enum GtkCellRendererMode
1154 {
1155 	/**
1156 	 * The cell is just for display
1157 	 * and cannot be interacted with.  Note that this doesn’t mean that eg. the
1158 	 * row being drawn can’t be selected -- just that a particular element of
1159 	 * it cannot be individually modified.
1160 	 */
1161 	INERT = 0,
1162 	/**
1163 	 * The cell can be clicked.
1164 	 */
1165 	ACTIVATABLE = 1,
1166 	/**
1167 	 * The cell can be edited or otherwise modified.
1168 	 */
1169 	EDITABLE = 2,
1170 }
1171 alias GtkCellRendererMode CellRendererMode;
1172 
1173 /**
1174  * Tells how a cell is to be rendered.
1175  */
1176 public enum GtkCellRendererState
1177 {
1178 	/**
1179 	 * The cell is currently selected, and
1180 	 * probably has a selection colored background to render to.
1181 	 */
1182 	SELECTED = 1,
1183 	/**
1184 	 * The mouse is hovering over the cell.
1185 	 */
1186 	PRELIT = 2,
1187 	/**
1188 	 * The cell is drawn in an insensitive manner
1189 	 */
1190 	INSENSITIVE = 4,
1191 	/**
1192 	 * The cell is in a sorted row
1193 	 */
1194 	SORTED = 8,
1195 	/**
1196 	 * The cell is in the focus row.
1197 	 */
1198 	FOCUSED = 16,
1199 	/**
1200 	 * The cell is in a row that can be expanded
1201 	 */
1202 	EXPANDABLE = 32,
1203 	/**
1204 	 * The cell is in a row that is expanded
1205 	 */
1206 	EXPANDED = 64,
1207 }
1208 alias GtkCellRendererState CellRendererState;
1209 
1210 /**
1211  * The widget attributes that can be used when creating a [class@Constraint].
1212  */
1213 public enum GtkConstraintAttribute
1214 {
1215 	/**
1216 	 * No attribute, used for constant
1217 	 * relations
1218 	 */
1219 	NONE = 0,
1220 	/**
1221 	 * The left edge of a widget, regardless of
1222 	 * text direction
1223 	 */
1224 	LEFT = 1,
1225 	/**
1226 	 * The right edge of a widget, regardless
1227 	 * of text direction
1228 	 */
1229 	RIGHT = 2,
1230 	/**
1231 	 * The top edge of a widget
1232 	 */
1233 	TOP = 3,
1234 	/**
1235 	 * The bottom edge of a widget
1236 	 */
1237 	BOTTOM = 4,
1238 	/**
1239 	 * The leading edge of a widget, depending
1240 	 * on text direction; equivalent to %GTK_CONSTRAINT_ATTRIBUTE_LEFT for LTR
1241 	 * languages, and %GTK_CONSTRAINT_ATTRIBUTE_RIGHT for RTL ones
1242 	 */
1243 	START = 5,
1244 	/**
1245 	 * The trailing edge of a widget, depending
1246 	 * on text direction; equivalent to %GTK_CONSTRAINT_ATTRIBUTE_RIGHT for LTR
1247 	 * languages, and %GTK_CONSTRAINT_ATTRIBUTE_LEFT for RTL ones
1248 	 */
1249 	END = 6,
1250 	/**
1251 	 * The width of a widget
1252 	 */
1253 	WIDTH = 7,
1254 	/**
1255 	 * The height of a widget
1256 	 */
1257 	HEIGHT = 8,
1258 	/**
1259 	 * The center of a widget, on the
1260 	 * horizontal axis
1261 	 */
1262 	CENTER_X = 9,
1263 	/**
1264 	 * The center of a widget, on the
1265 	 * vertical axis
1266 	 */
1267 	CENTER_Y = 10,
1268 	/**
1269 	 * The baseline of a widget
1270 	 */
1271 	BASELINE = 11,
1272 }
1273 alias GtkConstraintAttribute ConstraintAttribute;
1274 
1275 /**
1276  * The relation between two terms of a constraint.
1277  */
1278 public enum GtkConstraintRelation
1279 {
1280 	/**
1281 	 * Less than, or equal
1282 	 */
1283 	LE = -1,
1284 	/**
1285 	 * Equal
1286 	 */
1287 	EQ = 0,
1288 	/**
1289 	 * Greater than, or equal
1290 	 */
1291 	GE = 1,
1292 }
1293 alias GtkConstraintRelation ConstraintRelation;
1294 
1295 /**
1296  * The strength of a constraint, expressed as a symbolic constant.
1297  *
1298  * The strength of a [class@Constraint] can be expressed with any positive
1299  * integer; the values of this enumeration can be used for readability.
1300  */
1301 public enum GtkConstraintStrength
1302 {
1303 	/**
1304 	 * The constraint is required towards solving the layout
1305 	 */
1306 	REQUIRED = 1001001000,
1307 	/**
1308 	 * A strong constraint
1309 	 */
1310 	STRONG = 1000000000,
1311 	/**
1312 	 * A medium constraint
1313 	 */
1314 	MEDIUM = 1000,
1315 	/**
1316 	 * A weak constraint
1317 	 */
1318 	WEAK = 1,
1319 }
1320 alias GtkConstraintStrength ConstraintStrength;
1321 
1322 /**
1323  * Domain for VFL parsing errors.
1324  */
1325 public enum GtkConstraintVflParserError
1326 {
1327 	/**
1328 	 * Invalid or unknown symbol
1329 	 */
1330 	SYMBOL = 0,
1331 	/**
1332 	 * Invalid or unknown attribute
1333 	 */
1334 	ATTRIBUTE = 1,
1335 	/**
1336 	 * Invalid or unknown view
1337 	 */
1338 	VIEW = 2,
1339 	/**
1340 	 * Invalid or unknown metric
1341 	 */
1342 	METRIC = 3,
1343 	/**
1344 	 * Invalid or unknown priority
1345 	 */
1346 	PRIORITY = 4,
1347 	/**
1348 	 * Invalid or unknown relation
1349 	 */
1350 	RELATION = 5,
1351 }
1352 alias GtkConstraintVflParserError ConstraintVflParserError;
1353 
1354 /**
1355  * Specifies which corner a child widget should be placed in when packed into
1356  * a `GtkScrolledWindow.`
1357  *
1358  * This is effectively the opposite of where the scroll bars are placed.
1359  */
1360 public enum GtkCornerType
1361 {
1362 	/**
1363 	 * Place the scrollbars on the right and bottom of the
1364 	 * widget (default behaviour).
1365 	 */
1366 	TOP_LEFT = 0,
1367 	/**
1368 	 * Place the scrollbars on the top and right of the
1369 	 * widget.
1370 	 */
1371 	BOTTOM_LEFT = 1,
1372 	/**
1373 	 * Place the scrollbars on the left and bottom of the
1374 	 * widget.
1375 	 */
1376 	TOP_RIGHT = 2,
1377 	/**
1378 	 * Place the scrollbars on the top and left of the
1379 	 * widget.
1380 	 */
1381 	BOTTOM_RIGHT = 3,
1382 }
1383 alias GtkCornerType CornerType;
1384 
1385 /**
1386  * Errors that can occur while parsing CSS.
1387  *
1388  * These errors are unexpected and will cause parts of the given CSS
1389  * to be ignored.
1390  */
1391 public enum GtkCssParserError
1392 {
1393 	/**
1394 	 * Unknown failure.
1395 	 */
1396 	FAILED = 0,
1397 	/**
1398 	 * The given text does not form valid syntax
1399 	 */
1400 	SYNTAX = 1,
1401 	/**
1402 	 * Failed to import a resource
1403 	 */
1404 	IMPORT = 2,
1405 	/**
1406 	 * The given name has not been defined
1407 	 */
1408 	NAME = 3,
1409 	/**
1410 	 * The given value is not correct
1411 	 */
1412 	UNKNOWN_VALUE = 4,
1413 }
1414 alias GtkCssParserError CssParserError;
1415 
1416 /**
1417  * Warnings that can occur while parsing CSS.
1418  *
1419  * Unlike `GtkCssParserError`s, warnings do not cause the parser to
1420  * skip any input, but they indicate issues that should be fixed.
1421  */
1422 public enum GtkCssParserWarning
1423 {
1424 	/**
1425 	 * The given construct is
1426 	 * deprecated and will be removed in a future version
1427 	 */
1428 	DEPRECATED = 0,
1429 	/**
1430 	 * A syntax construct was used
1431 	 * that should be avoided
1432 	 */
1433 	SYNTAX = 1,
1434 	/**
1435 	 * A feature is not implemented
1436 	 */
1437 	UNIMPLEMENTED = 2,
1438 }
1439 alias GtkCssParserWarning CssParserWarning;
1440 
1441 /**
1442  * Flags to use with gtk_set_debug_flags().
1443  *
1444  * Settings these flags causes GTK to print out different
1445  * types of debugging information. Some of these flags are
1446  * only available when GTK has been configured with `-Ddebug=true`.
1447  */
1448 public enum GtkDebugFlags
1449 {
1450 	/**
1451 	 * Information about GtkTextView
1452 	 */
1453 	TEXT = 1,
1454 	/**
1455 	 * Information about GtkTreeView
1456 	 */
1457 	TREE = 2,
1458 	/**
1459 	 * Information about keyboard shortcuts
1460 	 */
1461 	KEYBINDINGS = 4,
1462 	/**
1463 	 * Information about modules and extensions
1464 	 */
1465 	MODULES = 8,
1466 	/**
1467 	 * Information about size allocation
1468 	 */
1469 	GEOMETRY = 16,
1470 	/**
1471 	 * Information about icon themes
1472 	 */
1473 	ICONTHEME = 32,
1474 	/**
1475 	 * Information about printing
1476 	 */
1477 	PRINTING = 64,
1478 	/**
1479 	 * Trace GtkBuilder operation
1480 	 */
1481 	BUILDER = 128,
1482 	/**
1483 	 * Information about size requests
1484 	 */
1485 	SIZE_REQUEST = 256,
1486 	/**
1487 	 * Disable the style property cache
1488 	 */
1489 	NO_CSS_CACHE = 512,
1490 	/**
1491 	 * Open the GTK inspector
1492 	 */
1493 	INTERACTIVE = 1024,
1494 	/**
1495 	 * Pretend the pointer is a touchscreen
1496 	 */
1497 	TOUCHSCREEN = 2048,
1498 	/**
1499 	 * Information about actions and menu models
1500 	 */
1501 	ACTIONS = 4096,
1502 	/**
1503 	 * Information from layout managers
1504 	 */
1505 	LAYOUT = 8192,
1506 	/**
1507 	 * Include debug render nodes in the generated snapshots
1508 	 */
1509 	SNAPSHOT = 16384,
1510 	/**
1511 	 * Information from the constraints solver
1512 	 */
1513 	CONSTRAINTS = 32768,
1514 	/**
1515 	 * Log unused GtkBuilder objects
1516 	 */
1517 	BUILDER_OBJECTS = 65536,
1518 	/**
1519 	 * Information about accessibility state changes
1520 	 */
1521 	A11Y = 131072,
1522 	/**
1523 	 * Information about icon fallback. Since: 4.2
1524 	 */
1525 	ICONFALLBACK = 262144,
1526 }
1527 alias GtkDebugFlags DebugFlags;
1528 
1529 /**
1530  * Passed to various keybinding signals for deleting text.
1531  */
1532 public enum GtkDeleteType
1533 {
1534 	/**
1535 	 * Delete characters.
1536 	 */
1537 	CHARS = 0,
1538 	/**
1539 	 * Delete only the portion of the word to the
1540 	 * left/right of cursor if we’re in the middle of a word.
1541 	 */
1542 	WORD_ENDS = 1,
1543 	/**
1544 	 * Delete words.
1545 	 */
1546 	WORDS = 2,
1547 	/**
1548 	 * Delete display-lines. Display-lines
1549 	 * refers to the visible lines, with respect to the current line
1550 	 * breaks. As opposed to paragraphs, which are defined by line
1551 	 * breaks in the input.
1552 	 */
1553 	DISPLAY_LINES = 3,
1554 	/**
1555 	 * Delete only the portion of the
1556 	 * display-line to the left/right of cursor.
1557 	 */
1558 	DISPLAY_LINE_ENDS = 4,
1559 	/**
1560 	 * Delete to the end of the
1561 	 * paragraph. Like C-k in Emacs (or its reverse).
1562 	 */
1563 	PARAGRAPH_ENDS = 5,
1564 	/**
1565 	 * Delete entire line. Like C-k in pico.
1566 	 */
1567 	PARAGRAPHS = 6,
1568 	/**
1569 	 * Delete only whitespace. Like M-\ in Emacs.
1570 	 */
1571 	WHITESPACE = 7,
1572 }
1573 alias GtkDeleteType DeleteType;
1574 
1575 /**
1576  * Flags used to influence dialog construction.
1577  */
1578 public enum GtkDialogFlags
1579 {
1580 	/**
1581 	 * Make the constructed dialog modal
1582 	 */
1583 	MODAL = 1,
1584 	/**
1585 	 * Destroy the dialog when its parent is destroyed
1586 	 */
1587 	DESTROY_WITH_PARENT = 2,
1588 	/**
1589 	 * Create dialog with actions in header
1590 	 * bar instead of action area
1591 	 */
1592 	USE_HEADER_BAR = 4,
1593 }
1594 alias GtkDialogFlags DialogFlags;
1595 
1596 /**
1597  * Focus movement types.
1598  */
1599 public enum GtkDirectionType
1600 {
1601 	/**
1602 	 * Move forward.
1603 	 */
1604 	TAB_FORWARD = 0,
1605 	/**
1606 	 * Move backward.
1607 	 */
1608 	TAB_BACKWARD = 1,
1609 	/**
1610 	 * Move up.
1611 	 */
1612 	UP = 2,
1613 	/**
1614 	 * Move down.
1615 	 */
1616 	DOWN = 3,
1617 	/**
1618 	 * Move left.
1619 	 */
1620 	LEFT = 4,
1621 	/**
1622 	 * Move right.
1623 	 */
1624 	RIGHT = 5,
1625 }
1626 alias GtkDirectionType DirectionType;
1627 
1628 /**
1629  * The identifiers for [iface@Gtk.Editable] properties.
1630  *
1631  * See [func@Gtk.Editable.install_properties] for details on how to
1632  * implement the `GtkEditable` interface.
1633  */
1634 public enum GtkEditableProperties
1635 {
1636 	/**
1637 	 * the property id for [property@Gtk.Editable:text]
1638 	 */
1639 	PROP_TEXT = 0,
1640 	/**
1641 	 * the property id for [property@Gtk.Editable:cursor-position]
1642 	 */
1643 	PROP_CURSOR_POSITION = 1,
1644 	/**
1645 	 * the property id for [property@Gtk.Editable:selection-bound]
1646 	 */
1647 	PROP_SELECTION_BOUND = 2,
1648 	/**
1649 	 * the property id for [property@Gtk.Editable:editable]
1650 	 */
1651 	PROP_EDITABLE = 3,
1652 	/**
1653 	 * the property id for [property@Gtk.Editable:width-chars]
1654 	 */
1655 	PROP_WIDTH_CHARS = 4,
1656 	/**
1657 	 * the property id for [property@Gtk.Editable:max-width-chars]
1658 	 */
1659 	PROP_MAX_WIDTH_CHARS = 5,
1660 	/**
1661 	 * the property id for [property@Gtk.Editable:xalign]
1662 	 */
1663 	PROP_XALIGN = 6,
1664 	/**
1665 	 * the property id for [property@Gtk.Editable:enable-undo]
1666 	 */
1667 	PROP_ENABLE_UNDO = 7,
1668 	/**
1669 	 * the number of properties
1670 	 */
1671 	NUM_PROPERTIES = 8,
1672 }
1673 alias GtkEditableProperties EditableProperties;
1674 
1675 /**
1676  * Specifies the side of the entry at which an icon is placed.
1677  */
1678 public enum GtkEntryIconPosition
1679 {
1680 	/**
1681 	 * At the beginning of the entry (depending on the text direction).
1682 	 */
1683 	PRIMARY = 0,
1684 	/**
1685 	 * At the end of the entry (depending on the text direction).
1686 	 */
1687 	SECONDARY = 1,
1688 }
1689 alias GtkEntryIconPosition EntryIconPosition;
1690 
1691 /**
1692  * Describes the behavior of a `GtkEventControllerScroll`.
1693  */
1694 public enum GtkEventControllerScrollFlags
1695 {
1696 	/**
1697 	 * Don't emit scroll.
1698 	 */
1699 	NONE = 0,
1700 	/**
1701 	 * Emit scroll with vertical deltas.
1702 	 */
1703 	VERTICAL = 1,
1704 	/**
1705 	 * Emit scroll with horizontal deltas.
1706 	 */
1707 	HORIZONTAL = 2,
1708 	/**
1709 	 * Only emit deltas that are multiples of 1.
1710 	 */
1711 	DISCRETE = 4,
1712 	/**
1713 	 * Emit ::decelerate after continuous scroll finishes.
1714 	 */
1715 	KINETIC = 8,
1716 	/**
1717 	 * Emit scroll on both axes.
1718 	 */
1719 	BOTH_AXES = 3,
1720 }
1721 alias GtkEventControllerScrollFlags EventControllerScrollFlags;
1722 
1723 /**
1724  * Describes the state of a [struct@Gdk.EventSequence] in a [class@Gesture].
1725  */
1726 public enum GtkEventSequenceState
1727 {
1728 	/**
1729 	 * The sequence is handled, but not grabbed.
1730 	 */
1731 	NONE = 0,
1732 	/**
1733 	 * The sequence is handled and grabbed.
1734 	 */
1735 	CLAIMED = 1,
1736 	/**
1737 	 * The sequence is denied.
1738 	 */
1739 	DENIED = 2,
1740 }
1741 alias GtkEventSequenceState EventSequenceState;
1742 
1743 /**
1744  * Describes whether a `GtkFileChooser` is being used to open existing files
1745  * or to save to a possibly new file.
1746  */
1747 public enum GtkFileChooserAction
1748 {
1749 	/**
1750 	 * Indicates open mode.  The file chooser
1751 	 * will only let the user pick an existing file.
1752 	 */
1753 	OPEN = 0,
1754 	/**
1755 	 * Indicates save mode.  The file chooser
1756 	 * will let the user pick an existing file, or type in a new
1757 	 * filename.
1758 	 */
1759 	SAVE = 1,
1760 	/**
1761 	 * Indicates an Open mode for
1762 	 * selecting folders.  The file chooser will let the user pick an
1763 	 * existing folder.
1764 	 */
1765 	SELECT_FOLDER = 2,
1766 }
1767 alias GtkFileChooserAction FileChooserAction;
1768 
1769 /**
1770  * These identify the various errors that can occur while calling
1771  * `GtkFileChooser` functions.
1772  */
1773 public enum GtkFileChooserError
1774 {
1775 	/**
1776 	 * Indicates that a file does not exist.
1777 	 */
1778 	NONEXISTENT = 0,
1779 	/**
1780 	 * Indicates a malformed filename.
1781 	 */
1782 	BAD_FILENAME = 1,
1783 	/**
1784 	 * Indicates a duplicate path (e.g. when
1785 	 * adding a bookmark).
1786 	 */
1787 	ALREADY_EXISTS = 2,
1788 	/**
1789 	 * Indicates an incomplete hostname
1790 	 * (e.g. "http://foo" without a slash after that).
1791 	 */
1792 	INCOMPLETE_HOSTNAME = 3,
1793 }
1794 alias GtkFileChooserError FileChooserError;
1795 
1796 /**
1797  * Describes changes in a filter in more detail and allows objects
1798  * using the filter to optimize refiltering items.
1799  *
1800  * If you are writing an implementation and are not sure which
1801  * value to pass, %GTK_FILTER_CHANGE_DIFFERENT is always a correct
1802  * choice.
1803  */
1804 public enum GtkFilterChange
1805 {
1806 	/**
1807 	 * The filter change cannot be
1808 	 * described with any of the other enumeration values.
1809 	 */
1810 	DIFFERENT = 0,
1811 	/**
1812 	 * The filter is less strict than
1813 	 * it was before: All items that it used to return %TRUE for
1814 	 * still return %TRUE, others now may, too.
1815 	 */
1816 	LESS_STRICT = 1,
1817 	/**
1818 	 * The filter is more strict than
1819 	 * it was before: All items that it used to return %FALSE for
1820 	 * still return %FALSE, others now may, too.
1821 	 */
1822 	MORE_STRICT = 2,
1823 }
1824 alias GtkFilterChange FilterChange;
1825 
1826 /**
1827  * Describes the known strictness of a filter.
1828  *
1829  * Note that for filters where the strictness is not known,
1830  * %GTK_FILTER_MATCH_SOME is always an acceptable value,
1831  * even if a filter does match all or no items.
1832  */
1833 public enum GtkFilterMatch
1834 {
1835 	/**
1836 	 * The filter matches some items,
1837 	 * gtk_filter_match() may return %TRUE or %FALSE
1838 	 */
1839 	SOME = 0,
1840 	/**
1841 	 * The filter does not match any item,
1842 	 * gtk_filter_match() will always return %FALSE.
1843 	 */
1844 	NONE = 1,
1845 	/**
1846 	 * The filter matches all items,
1847 	 * gtk_filter_match() will alays return %TRUE.
1848 	 */
1849 	ALL = 2,
1850 }
1851 alias GtkFilterMatch FilterMatch;
1852 
1853 /**
1854  * Specifies the granularity of font selection
1855  * that is desired in a `GtkFontChooser`.
1856  *
1857  * This enumeration may be extended in the future; applications should
1858  * ignore unknown values.
1859  */
1860 public enum GtkFontChooserLevel
1861 {
1862 	/**
1863 	 * Allow selecting a font family
1864 	 */
1865 	FAMILY = 0,
1866 	/**
1867 	 * Allow selecting a specific font face
1868 	 */
1869 	STYLE = 1,
1870 	/**
1871 	 * Allow selecting a specific font size
1872 	 */
1873 	SIZE = 2,
1874 	/**
1875 	 * Allow changing OpenType font variation axes
1876 	 */
1877 	VARIATIONS = 4,
1878 	/**
1879 	 * Allow selecting specific OpenType font features
1880 	 */
1881 	FEATURES = 8,
1882 }
1883 alias GtkFontChooserLevel FontChooserLevel;
1884 
1885 /**
1886  * Used to specify options for gtk_icon_theme_lookup_icon().
1887  */
1888 public enum GtkIconLookupFlags
1889 {
1890 	/**
1891 	 * Try to always load regular icons, even
1892 	 * when symbolic icon names are given
1893 	 */
1894 	FORCE_REGULAR = 1,
1895 	/**
1896 	 * Try to always load symbolic icons, even
1897 	 * when regular icon names are given
1898 	 */
1899 	FORCE_SYMBOLIC = 2,
1900 	/**
1901 	 * Starts loading the texture in the background
1902 	 * so it is ready when later needed.
1903 	 */
1904 	PRELOAD = 4,
1905 }
1906 alias GtkIconLookupFlags IconLookupFlags;
1907 
1908 /**
1909  * Built-in icon sizes.
1910  *
1911  * Icon sizes default to being inherited. Where they cannot be
1912  * inherited, text size is the default.
1913  *
1914  * All widgets which use `GtkIconSize` set the normal-icons or
1915  * large-icons style classes correspondingly, and let themes
1916  * determine the actual size to be used with the
1917  * `-gtk-icon-size` CSS property.
1918  */
1919 public enum GtkIconSize
1920 {
1921 	/**
1922 	 * Keep the size of the parent element
1923 	 */
1924 	INHERIT = 0,
1925 	/**
1926 	 * Size similar to text size
1927 	 */
1928 	NORMAL = 1,
1929 	/**
1930 	 * Large size, for example in an icon view
1931 	 */
1932 	LARGE = 2,
1933 }
1934 alias GtkIconSize IconSize;
1935 
1936 /**
1937  * Error codes for `GtkIconTheme` operations.
1938  */
1939 public enum GtkIconThemeError
1940 {
1941 	/**
1942 	 * The icon specified does not exist in the theme
1943 	 */
1944 	NOT_FOUND = 0,
1945 	/**
1946 	 * An unspecified error occurred.
1947 	 */
1948 	FAILED = 1,
1949 }
1950 alias GtkIconThemeError IconThemeError;
1951 
1952 /**
1953  * An enum for determining where a dropped item goes.
1954  */
1955 public enum GtkIconViewDropPosition
1956 {
1957 	/**
1958 	 * no drop possible
1959 	 */
1960 	NO_DROP = 0,
1961 	/**
1962 	 * dropped item replaces the item
1963 	 */
1964 	DROP_INTO = 1,
1965 	/**
1966 	 * dropped item is inserted to the left
1967 	 */
1968 	DROP_LEFT = 2,
1969 	/**
1970 	 * dropped item is inserted to the right
1971 	 */
1972 	DROP_RIGHT = 3,
1973 	/**
1974 	 * dropped item is inserted above
1975 	 */
1976 	DROP_ABOVE = 4,
1977 	/**
1978 	 * dropped item is inserted below
1979 	 */
1980 	DROP_BELOW = 5,
1981 }
1982 alias GtkIconViewDropPosition IconViewDropPosition;
1983 
1984 /**
1985  * Describes the image data representation used by a [class@Gtk.Image].
1986  *
1987  * If you want to get the image from the widget, you can only get the
1988  * currently-stored representation; for instance, if the gtk_image_get_storage_type()
1989  * returns %GTK_IMAGE_PAINTABLE, then you can call gtk_image_get_paintable().
1990  *
1991  * For empty images, you can request any storage type (call any of the "get"
1992  * functions), but they will all return %NULL values.
1993  */
1994 public enum GtkImageType
1995 {
1996 	/**
1997 	 * there is no image displayed by the widget
1998 	 */
1999 	EMPTY = 0,
2000 	/**
2001 	 * the widget contains a named icon
2002 	 */
2003 	ICON_NAME = 1,
2004 	/**
2005 	 * the widget contains a `GIcon`
2006 	 */
2007 	GICON = 2,
2008 	/**
2009 	 * the widget contains a `GdkPaintable`
2010 	 */
2011 	PAINTABLE = 3,
2012 }
2013 alias GtkImageType ImageType;
2014 
2015 /**
2016  * Describes hints that might be taken into account by input methods
2017  * or applications.
2018  *
2019  * Note that input methods may already tailor their behaviour according
2020  * to the [enum@InputPurpose] of the entry.
2021  *
2022  * Some common sense is expected when using these flags - mixing
2023  * %GTK_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense.
2024  *
2025  * This enumeration may be extended in the future; input methods should
2026  * ignore unknown values.
2027  */
2028 public enum GtkInputHints
2029 {
2030 	/**
2031 	 * No special behaviour suggested
2032 	 */
2033 	NONE = 0,
2034 	/**
2035 	 * Suggest checking for typos
2036 	 */
2037 	SPELLCHECK = 1,
2038 	/**
2039 	 * Suggest not checking for typos
2040 	 */
2041 	NO_SPELLCHECK = 2,
2042 	/**
2043 	 * Suggest word completion
2044 	 */
2045 	WORD_COMPLETION = 4,
2046 	/**
2047 	 * Suggest to convert all text to lowercase
2048 	 */
2049 	LOWERCASE = 8,
2050 	/**
2051 	 * Suggest to capitalize all text
2052 	 */
2053 	UPPERCASE_CHARS = 16,
2054 	/**
2055 	 * Suggest to capitalize the first
2056 	 * character of each word
2057 	 */
2058 	UPPERCASE_WORDS = 32,
2059 	/**
2060 	 * Suggest to capitalize the
2061 	 * first word of each sentence
2062 	 */
2063 	UPPERCASE_SENTENCES = 64,
2064 	/**
2065 	 * Suggest to not show an onscreen keyboard
2066 	 * (e.g for a calculator that already has all the keys).
2067 	 */
2068 	INHIBIT_OSK = 128,
2069 	/**
2070 	 * The text is vertical
2071 	 */
2072 	VERTICAL_WRITING = 256,
2073 	/**
2074 	 * Suggest offering Emoji support
2075 	 */
2076 	EMOJI = 512,
2077 	/**
2078 	 * Suggest not offering Emoji support
2079 	 */
2080 	NO_EMOJI = 1024,
2081 	/**
2082 	 * Request that the input method should not
2083 	 * update personalized data (like typing history)
2084 	 */
2085 	PRIVATE = 2048,
2086 }
2087 alias GtkInputHints InputHints;
2088 
2089 /**
2090  * Describes primary purpose of the input widget.
2091  *
2092  * This information is useful for on-screen keyboards and similar input
2093  * methods to decide which keys should be presented to the user.
2094  *
2095  * Note that the purpose is not meant to impose a totally strict rule
2096  * about allowed characters, and does not replace input validation.
2097  * It is fine for an on-screen keyboard to let the user override the
2098  * character set restriction that is expressed by the purpose. The
2099  * application is expected to validate the entry contents, even if
2100  * it specified a purpose.
2101  *
2102  * The difference between %GTK_INPUT_PURPOSE_DIGITS and
2103  * %GTK_INPUT_PURPOSE_NUMBER is that the former accepts only digits
2104  * while the latter also some punctuation (like commas or points, plus,
2105  * minus) and “e” or “E” as in 3.14E+000.
2106  *
2107  * This enumeration may be extended in the future; input methods should
2108  * interpret unknown values as “free form”.
2109  */
2110 public enum GtkInputPurpose
2111 {
2112 	/**
2113 	 * Allow any character
2114 	 */
2115 	FREE_FORM = 0,
2116 	/**
2117 	 * Allow only alphabetic characters
2118 	 */
2119 	ALPHA = 1,
2120 	/**
2121 	 * Allow only digits
2122 	 */
2123 	DIGITS = 2,
2124 	/**
2125 	 * Edited field expects numbers
2126 	 */
2127 	NUMBER = 3,
2128 	/**
2129 	 * Edited field expects phone number
2130 	 */
2131 	PHONE = 4,
2132 	/**
2133 	 * Edited field expects URL
2134 	 */
2135 	URL = 5,
2136 	/**
2137 	 * Edited field expects email address
2138 	 */
2139 	EMAIL = 6,
2140 	/**
2141 	 * Edited field expects the name of a person
2142 	 */
2143 	NAME = 7,
2144 	/**
2145 	 * Like %GTK_INPUT_PURPOSE_FREE_FORM, but characters are hidden
2146 	 */
2147 	PASSWORD = 8,
2148 	/**
2149 	 * Like %GTK_INPUT_PURPOSE_DIGITS, but characters are hidden
2150 	 */
2151 	PIN = 9,
2152 	/**
2153 	 * Allow any character, in addition to control codes
2154 	 */
2155 	TERMINAL = 10,
2156 }
2157 alias GtkInputPurpose InputPurpose;
2158 
2159 /**
2160  * Used for justifying the text inside a [class@Label] widget.
2161  */
2162 public enum GtkJustification
2163 {
2164 	/**
2165 	 * The text is placed at the left edge of the label.
2166 	 */
2167 	LEFT = 0,
2168 	/**
2169 	 * The text is placed at the right edge of the label.
2170 	 */
2171 	RIGHT = 1,
2172 	/**
2173 	 * The text is placed in the center of the label.
2174 	 */
2175 	CENTER = 2,
2176 	/**
2177 	 * The text is placed is distributed across the label.
2178 	 */
2179 	FILL = 3,
2180 }
2181 alias GtkJustification Justification;
2182 
2183 /**
2184  * Describes how [class@LevelBar] contents should be rendered.
2185  *
2186  * Note that this enumeration could be extended with additional modes
2187  * in the future.
2188  */
2189 public enum GtkLevelBarMode
2190 {
2191 	/**
2192 	 * the bar has a continuous mode
2193 	 */
2194 	CONTINUOUS = 0,
2195 	/**
2196 	 * the bar has a discrete mode
2197 	 */
2198 	DISCRETE = 1,
2199 }
2200 alias GtkLevelBarMode LevelBarMode;
2201 
2202 /**
2203  * The type of license for an application.
2204  *
2205  * This enumeration can be expanded at later date.
2206  */
2207 public enum GtkLicense
2208 {
2209 	/**
2210 	 * No license specified
2211 	 */
2212 	UNKNOWN = 0,
2213 	/**
2214 	 * A license text is going to be specified by the
2215 	 * developer
2216 	 */
2217 	CUSTOM = 1,
2218 	/**
2219 	 * The GNU General Public License, version 2.0 or later
2220 	 */
2221 	GPL_2_0 = 2,
2222 	/**
2223 	 * The GNU General Public License, version 3.0 or later
2224 	 */
2225 	GPL_3_0 = 3,
2226 	/**
2227 	 * The GNU Lesser General Public License, version 2.1 or later
2228 	 */
2229 	LGPL_2_1 = 4,
2230 	/**
2231 	 * The GNU Lesser General Public License, version 3.0 or later
2232 	 */
2233 	LGPL_3_0 = 5,
2234 	/**
2235 	 * The BSD standard license
2236 	 */
2237 	BSD = 6,
2238 	/**
2239 	 * The MIT/X11 standard license
2240 	 */
2241 	MIT_X11 = 7,
2242 	/**
2243 	 * The Artistic License, version 2.0
2244 	 */
2245 	ARTISTIC = 8,
2246 	/**
2247 	 * The GNU General Public License, version 2.0 only
2248 	 */
2249 	GPL_2_0_ONLY = 9,
2250 	/**
2251 	 * The GNU General Public License, version 3.0 only
2252 	 */
2253 	GPL_3_0_ONLY = 10,
2254 	/**
2255 	 * The GNU Lesser General Public License, version 2.1 only
2256 	 */
2257 	LGPL_2_1_ONLY = 11,
2258 	/**
2259 	 * The GNU Lesser General Public License, version 3.0 only
2260 	 */
2261 	LGPL_3_0_ONLY = 12,
2262 	/**
2263 	 * The GNU Affero General Public License, version 3.0 or later
2264 	 */
2265 	AGPL_3_0 = 13,
2266 	/**
2267 	 * The GNU Affero General Public License, version 3.0 only
2268 	 */
2269 	AGPL_3_0_ONLY = 14,
2270 	/**
2271 	 * The 3-clause BSD licence
2272 	 */
2273 	BSD_3 = 15,
2274 	/**
2275 	 * The Apache License, version 2.0
2276 	 */
2277 	APACHE_2_0 = 16,
2278 	/**
2279 	 * The Mozilla Public License, version 2.0
2280 	 */
2281 	MPL_2_0 = 17,
2282 }
2283 alias GtkLicense License;
2284 
2285 /**
2286  * The type of message being displayed in a [class@MessageDialog].
2287  */
2288 public enum GtkMessageType : uint
2289 {
2290 	/**
2291 	 * Informational message
2292 	 */
2293 	INFO = 0,
2294 	/**
2295 	 * Non-fatal warning message
2296 	 */
2297 	WARNING = 1,
2298 	/**
2299 	 * Question requiring a choice
2300 	 */
2301 	QUESTION = 2,
2302 	/**
2303 	 * Fatal error message
2304 	 */
2305 	ERROR = 3,
2306 	/**
2307 	 * None of the above
2308 	 */
2309 	OTHER = 4,
2310 }
2311 alias GtkMessageType MessageType;
2312 
2313 /**
2314  * Passed as argument to various keybinding signals for moving the
2315  * cursor position.
2316  */
2317 public enum GtkMovementStep
2318 {
2319 	/**
2320 	 * Move forward or back by graphemes
2321 	 */
2322 	LOGICAL_POSITIONS = 0,
2323 	/**
2324 	 * Move left or right by graphemes
2325 	 */
2326 	VISUAL_POSITIONS = 1,
2327 	/**
2328 	 * Move forward or back by words
2329 	 */
2330 	WORDS = 2,
2331 	/**
2332 	 * Move up or down lines (wrapped lines)
2333 	 */
2334 	DISPLAY_LINES = 3,
2335 	/**
2336 	 * Move to either end of a line
2337 	 */
2338 	DISPLAY_LINE_ENDS = 4,
2339 	/**
2340 	 * Move up or down paragraphs (newline-ended lines)
2341 	 */
2342 	PARAGRAPHS = 5,
2343 	/**
2344 	 * Move to either end of a paragraph
2345 	 */
2346 	PARAGRAPH_ENDS = 6,
2347 	/**
2348 	 * Move by pages
2349 	 */
2350 	PAGES = 7,
2351 	/**
2352 	 * Move to ends of the buffer
2353 	 */
2354 	BUFFER_ENDS = 8,
2355 	/**
2356 	 * Move horizontally by pages
2357 	 */
2358 	HORIZONTAL_PAGES = 9,
2359 }
2360 alias GtkMovementStep MovementStep;
2361 
2362 /**
2363  * Options for selecting a different wrap mode for natural size
2364  * requests.
2365  *
2366  * See for example the [property@Gtk.Label:natural-wrap-mode] property.
2367  *
2368  * Since: 4.6
2369  */
2370 public enum GtkNaturalWrapMode
2371 {
2372 	/**
2373 	 * Inherit the minimum size request.
2374 	 * In particular, this should be used with %PANGO_WRAP_CHAR.
2375 	 */
2376 	INHERIT = 0,
2377 	/**
2378 	 * Try not to wrap the text. This mode is the
2379 	 * closest to GTK3's behavior but can lead to a wide label leaving
2380 	 * lots of empty space below the text.
2381 	 */
2382 	NONE = 1,
2383 	/**
2384 	 * Attempt to wrap at word boundaries. This
2385 	 * is useful in particular when using %PANGO_WRAP_WORD_CHAR as the
2386 	 * wrap mode.
2387 	 */
2388 	WORD = 2,
2389 }
2390 alias GtkNaturalWrapMode NaturalWrapMode;
2391 
2392 /**
2393  * The parameter used in the action signals of `GtkNotebook`.
2394  */
2395 public enum GtkNotebookTab
2396 {
2397 	/**
2398 	 * the first tab in the notebook
2399 	 */
2400 	FIRST = 0,
2401 	/**
2402 	 * the last tab in the notebook
2403 	 */
2404 	LAST = 1,
2405 }
2406 alias GtkNotebookTab NotebookTab;
2407 
2408 /**
2409  * Used to determine the layout of pages on a sheet when printing
2410  * multiple pages per sheet.
2411  */
2412 public enum GtkNumberUpLayout
2413 {
2414 	/**
2415 	 * ![](layout-lrtb.png)
2416 	 */
2417 	LRTB = 0,
2418 	/**
2419 	 * ![](layout-lrbt.png)
2420 	 */
2421 	LRBT = 1,
2422 	/**
2423 	 * ![](layout-rltb.png)
2424 	 */
2425 	RLTB = 2,
2426 	/**
2427 	 * ![](layout-rlbt.png)
2428 	 */
2429 	RLBT = 3,
2430 	/**
2431 	 * ![](layout-tblr.png)
2432 	 */
2433 	TBLR = 4,
2434 	/**
2435 	 * ![](layout-tbrl.png)
2436 	 */
2437 	TBRL = 5,
2438 	/**
2439 	 * ![](layout-btlr.png)
2440 	 */
2441 	BTLR = 6,
2442 	/**
2443 	 * ![](layout-btrl.png)
2444 	 */
2445 	BTRL = 7,
2446 }
2447 alias GtkNumberUpLayout NumberUpLayout;
2448 
2449 /**
2450  * Describes the way two values can be compared.
2451  *
2452  * These values can be used with a [callback@GLib.CompareFunc]. However,
2453  * a `GCompareFunc` is allowed to return any integer values.
2454  * For converting such a value to a `GtkOrdering` value, use
2455  * [func@Gtk.Ordering.from_cmpfunc].
2456  */
2457 public enum GtkOrdering
2458 {
2459 	/**
2460 	 * the first value is smaller than the second
2461 	 */
2462 	SMALLER = -1,
2463 	/**
2464 	 * the two values are equal
2465 	 */
2466 	EQUAL = 0,
2467 	/**
2468 	 * the first value is larger than the second
2469 	 */
2470 	LARGER = 1,
2471 }
2472 alias GtkOrdering Ordering;
2473 
2474 /**
2475  * Represents the orientation of widgets and other objects.
2476  *
2477  * Typical examples are [class@Box] or [class@GesturePan].
2478  */
2479 public enum GtkOrientation
2480 {
2481 	/**
2482 	 * The element is in horizontal orientation.
2483 	 */
2484 	HORIZONTAL = 0,
2485 	/**
2486 	 * The element is in vertical orientation.
2487 	 */
2488 	VERTICAL = 1,
2489 }
2490 alias GtkOrientation Orientation;
2491 
2492 /**
2493  * Defines how content overflowing a given area should be handled.
2494  *
2495  * This is used in [method@Gtk.Widget.set_overflow]. The
2496  * [property@Gtk.Widget:overflow] property is modeled after the
2497  * CSS overflow property, but implements it only partially.
2498  */
2499 public enum GtkOverflow
2500 {
2501 	/**
2502 	 * No change is applied. Content is drawn at the specified
2503 	 * position.
2504 	 */
2505 	VISIBLE = 0,
2506 	/**
2507 	 * Content is clipped to the bounds of the area. Content
2508 	 * outside the area is not drawn and cannot be interacted with.
2509 	 */
2510 	HIDDEN = 1,
2511 }
2512 alias GtkOverflow Overflow;
2513 
2514 /**
2515  * Represents the packing location of a children in its parent.
2516  *
2517  * See [class@WindowControls] for example.
2518  */
2519 public enum GtkPackType
2520 {
2521 	/**
2522 	 * The child is packed into the start of the widget
2523 	 */
2524 	START = 0,
2525 	/**
2526 	 * The child is packed into the end of the widget
2527 	 */
2528 	END = 1,
2529 }
2530 alias GtkPackType PackType;
2531 
2532 /**
2533  * The type of a pad action.
2534  */
2535 public enum GtkPadActionType
2536 {
2537 	/**
2538 	 * Action is triggered by a pad button
2539 	 */
2540 	BUTTON = 0,
2541 	/**
2542 	 * Action is triggered by a pad ring
2543 	 */
2544 	RING = 1,
2545 	/**
2546 	 * Action is triggered by a pad strip
2547 	 */
2548 	STRIP = 2,
2549 }
2550 alias GtkPadActionType PadActionType;
2551 
2552 /**
2553  * See also gtk_print_settings_set_orientation().
2554  */
2555 public enum GtkPageOrientation
2556 {
2557 	/**
2558 	 * Portrait mode.
2559 	 */
2560 	PORTRAIT = 0,
2561 	/**
2562 	 * Landscape mode.
2563 	 */
2564 	LANDSCAPE = 1,
2565 	/**
2566 	 * Reverse portrait mode.
2567 	 */
2568 	REVERSE_PORTRAIT = 2,
2569 	/**
2570 	 * Reverse landscape mode.
2571 	 */
2572 	REVERSE_LANDSCAPE = 3,
2573 }
2574 alias GtkPageOrientation PageOrientation;
2575 
2576 /**
2577  * See also gtk_print_job_set_page_set().
2578  */
2579 public enum GtkPageSet
2580 {
2581 	/**
2582 	 * All pages.
2583 	 */
2584 	ALL = 0,
2585 	/**
2586 	 * Even pages.
2587 	 */
2588 	EVEN = 1,
2589 	/**
2590 	 * Odd pages.
2591 	 */
2592 	ODD = 2,
2593 }
2594 alias GtkPageSet PageSet;
2595 
2596 /**
2597  * Describes the panning direction of a [class@GesturePan].
2598  */
2599 public enum GtkPanDirection
2600 {
2601 	/**
2602 	 * panned towards the left
2603 	 */
2604 	LEFT = 0,
2605 	/**
2606 	 * panned towards the right
2607 	 */
2608 	RIGHT = 1,
2609 	/**
2610 	 * panned upwards
2611 	 */
2612 	UP = 2,
2613 	/**
2614 	 * panned downwards
2615 	 */
2616 	DOWN = 3,
2617 }
2618 alias GtkPanDirection PanDirection;
2619 
2620 /**
2621  * Flags that influence the behavior of [method@Widget.pick].
2622  */
2623 public enum GtkPickFlags
2624 {
2625 	/**
2626 	 * The default behavior, include widgets that are receiving events
2627 	 */
2628 	DEFAULT = 0,
2629 	/**
2630 	 * Include widgets that are insensitive
2631 	 */
2632 	INSENSITIVE = 1,
2633 	/**
2634 	 * Include widgets that are marked as non-targetable. See [property@Widget:can-target]
2635 	 */
2636 	NON_TARGETABLE = 2,
2637 }
2638 alias GtkPickFlags PickFlags;
2639 
2640 /**
2641  * Determines how the size should be computed to achieve the one of the
2642  * visibility mode for the scrollbars.
2643  */
2644 public enum GtkPolicyType
2645 {
2646 	/**
2647 	 * The scrollbar is always visible. The view size is
2648 	 * independent of the content.
2649 	 */
2650 	ALWAYS = 0,
2651 	/**
2652 	 * The scrollbar will appear and disappear as necessary.
2653 	 * For example, when all of a `GtkTreeView` can not be seen.
2654 	 */
2655 	AUTOMATIC = 1,
2656 	/**
2657 	 * The scrollbar should never appear. In this mode the
2658 	 * content determines the size.
2659 	 */
2660 	NEVER = 2,
2661 	/**
2662 	 * Don't show a scrollbar, but don't force the
2663 	 * size to follow the content. This can be used e.g. to make multiple
2664 	 * scrolled windows share a scrollbar.
2665 	 */
2666 	EXTERNAL = 3,
2667 }
2668 alias GtkPolicyType PolicyType;
2669 
2670 /**
2671  * Flags that affect how popover menus are created from
2672  * a menu model.
2673  */
2674 public enum GtkPopoverMenuFlags
2675 {
2676 	/**
2677 	 * Create submenus as nested
2678 	 * popovers. Without this flag, submenus are created as
2679 	 * sliding pages that replace the main menu.
2680 	 */
2681 	NESTED = 1,
2682 }
2683 alias GtkPopoverMenuFlags PopoverMenuFlags;
2684 
2685 /**
2686  * Describes which edge of a widget a certain feature is positioned at.
2687  *
2688  * For examples, see the tabs of a [class@Notebook], or the label
2689  * of a [class@Scale].
2690  */
2691 public enum GtkPositionType
2692 {
2693 	/**
2694 	 * The feature is at the left edge.
2695 	 */
2696 	LEFT = 0,
2697 	/**
2698 	 * The feature is at the right edge.
2699 	 */
2700 	RIGHT = 1,
2701 	/**
2702 	 * The feature is at the top edge.
2703 	 */
2704 	TOP = 2,
2705 	/**
2706 	 * The feature is at the bottom edge.
2707 	 */
2708 	BOTTOM = 3,
2709 }
2710 alias GtkPositionType PositionType;
2711 
2712 /**
2713  * Specifies which features the print dialog should offer.
2714  *
2715  * If neither %GTK_PRINT_CAPABILITY_GENERATE_PDF nor
2716  * %GTK_PRINT_CAPABILITY_GENERATE_PS is specified, GTK assumes that all
2717  * formats are supported.
2718  */
2719 public enum GtkPrintCapabilities
2720 {
2721 	/**
2722 	 * Print dialog will offer printing even/odd pages.
2723 	 */
2724 	PAGE_SET = 1,
2725 	/**
2726 	 * Print dialog will allow to print multiple copies.
2727 	 */
2728 	COPIES = 2,
2729 	/**
2730 	 * Print dialog will allow to collate multiple copies.
2731 	 */
2732 	COLLATE = 4,
2733 	/**
2734 	 * Print dialog will allow to print pages in reverse order.
2735 	 */
2736 	REVERSE = 8,
2737 	/**
2738 	 * Print dialog will allow to scale the output.
2739 	 */
2740 	SCALE = 16,
2741 	/**
2742 	 * The program will send the document to
2743 	 * the printer in PDF format
2744 	 */
2745 	GENERATE_PDF = 32,
2746 	/**
2747 	 * The program will send the document to
2748 	 * the printer in Postscript format
2749 	 */
2750 	GENERATE_PS = 64,
2751 	/**
2752 	 * Print dialog will offer a preview
2753 	 */
2754 	PREVIEW = 128,
2755 	/**
2756 	 * Print dialog will offer printing multiple
2757 	 * pages per sheet
2758 	 */
2759 	NUMBER_UP = 256,
2760 	/**
2761 	 * Print dialog will allow to rearrange
2762 	 * pages when printing multiple pages per sheet
2763 	 */
2764 	NUMBER_UP_LAYOUT = 512,
2765 }
2766 alias GtkPrintCapabilities PrintCapabilities;
2767 
2768 /**
2769  * See also gtk_print_settings_set_duplex().
2770  */
2771 public enum GtkPrintDuplex
2772 {
2773 	/**
2774 	 * No duplex.
2775 	 */
2776 	SIMPLEX = 0,
2777 	/**
2778 	 * Horizontal duplex.
2779 	 */
2780 	HORIZONTAL = 1,
2781 	/**
2782 	 * Vertical duplex.
2783 	 */
2784 	VERTICAL = 2,
2785 }
2786 alias GtkPrintDuplex PrintDuplex;
2787 
2788 /**
2789  * Error codes that identify various errors that can occur while
2790  * using the GTK printing support.
2791  */
2792 public enum GtkPrintError
2793 {
2794 	/**
2795 	 * An unspecified error occurred.
2796 	 */
2797 	GENERAL = 0,
2798 	/**
2799 	 * An internal error occurred.
2800 	 */
2801 	INTERNAL_ERROR = 1,
2802 	/**
2803 	 * A memory allocation failed.
2804 	 */
2805 	NOMEM = 2,
2806 	/**
2807 	 * An error occurred while loading a page setup
2808 	 * or paper size from a key file.
2809 	 */
2810 	INVALID_FILE = 3,
2811 }
2812 alias GtkPrintError PrintError;
2813 
2814 /**
2815  * Determines what action the print operation should perform.
2816  *
2817  * A parameter of this typs is passed to [method@Gtk.PrintOperation.run].
2818  */
2819 public enum GtkPrintOperationAction
2820 {
2821 	/**
2822 	 * Show the print dialog.
2823 	 */
2824 	PRINT_DIALOG = 0,
2825 	/**
2826 	 * Start to print without showing
2827 	 * the print dialog, based on the current print settings.
2828 	 */
2829 	PRINT = 1,
2830 	/**
2831 	 * Show the print preview.
2832 	 */
2833 	PREVIEW = 2,
2834 	/**
2835 	 * Export to a file. This requires
2836 	 * the export-filename property to be set.
2837 	 */
2838 	EXPORT = 3,
2839 }
2840 alias GtkPrintOperationAction PrintOperationAction;
2841 
2842 /**
2843  * The result of a print operation.
2844  *
2845  * A value of this type is returned by [method@Gtk.PrintOperation.run].
2846  */
2847 public enum GtkPrintOperationResult
2848 {
2849 	/**
2850 	 * An error has occurred.
2851 	 */
2852 	ERROR = 0,
2853 	/**
2854 	 * The print settings should be stored.
2855 	 */
2856 	APPLY = 1,
2857 	/**
2858 	 * The print operation has been canceled,
2859 	 * the print settings should not be stored.
2860 	 */
2861 	CANCEL = 2,
2862 	/**
2863 	 * The print operation is not complete
2864 	 * yet. This value will only be returned when running asynchronously.
2865 	 */
2866 	IN_PROGRESS = 3,
2867 }
2868 alias GtkPrintOperationResult PrintOperationResult;
2869 
2870 /**
2871  * See also gtk_print_job_set_pages()
2872  */
2873 public enum GtkPrintPages
2874 {
2875 	/**
2876 	 * All pages.
2877 	 */
2878 	ALL = 0,
2879 	/**
2880 	 * Current page.
2881 	 */
2882 	CURRENT = 1,
2883 	/**
2884 	 * Range of pages.
2885 	 */
2886 	RANGES = 2,
2887 	/**
2888 	 * Selected pages.
2889 	 */
2890 	SELECTION = 3,
2891 }
2892 alias GtkPrintPages PrintPages;
2893 
2894 /**
2895  * See also gtk_print_settings_set_quality().
2896  */
2897 public enum GtkPrintQuality
2898 {
2899 	/**
2900 	 * Low quality.
2901 	 */
2902 	LOW = 0,
2903 	/**
2904 	 * Normal quality.
2905 	 */
2906 	NORMAL = 1,
2907 	/**
2908 	 * High quality.
2909 	 */
2910 	HIGH = 2,
2911 	/**
2912 	 * Draft quality.
2913 	 */
2914 	DRAFT = 3,
2915 }
2916 alias GtkPrintQuality PrintQuality;
2917 
2918 /**
2919  * The status gives a rough indication of the completion of a running
2920  * print operation.
2921  */
2922 public enum GtkPrintStatus
2923 {
2924 	/**
2925 	 * The printing has not started yet; this
2926 	 * status is set initially, and while the print dialog is shown.
2927 	 */
2928 	INITIAL = 0,
2929 	/**
2930 	 * This status is set while the begin-print
2931 	 * signal is emitted and during pagination.
2932 	 */
2933 	PREPARING = 1,
2934 	/**
2935 	 * This status is set while the
2936 	 * pages are being rendered.
2937 	 */
2938 	GENERATING_DATA = 2,
2939 	/**
2940 	 * The print job is being sent off to the
2941 	 * printer.
2942 	 */
2943 	SENDING_DATA = 3,
2944 	/**
2945 	 * The print job has been sent to the printer,
2946 	 * but is not printed for some reason, e.g. the printer may be stopped.
2947 	 */
2948 	PENDING = 4,
2949 	/**
2950 	 * Some problem has occurred during
2951 	 * printing, e.g. a paper jam.
2952 	 */
2953 	PENDING_ISSUE = 5,
2954 	/**
2955 	 * The printer is processing the print job.
2956 	 */
2957 	PRINTING = 6,
2958 	/**
2959 	 * The printing has been completed successfully.
2960 	 */
2961 	FINISHED = 7,
2962 	/**
2963 	 * The printing has been aborted.
2964 	 */
2965 	FINISHED_ABORTED = 8,
2966 }
2967 alias GtkPrintStatus PrintStatus;
2968 
2969 /**
2970  * Describes limits of a [class@EventController] for handling events
2971  * targeting other widgets.
2972  */
2973 public enum GtkPropagationLimit
2974 {
2975 	/**
2976 	 * Events are handled regardless of what their
2977 	 * target is.
2978 	 */
2979 	NONE = 0,
2980 	/**
2981 	 * Events are only handled if their target
2982 	 * is in the same [iface@Native] as the event controllers widget. Note
2983 	 * that some event types have two targets (origin and destination).
2984 	 */
2985 	SAME_NATIVE = 1,
2986 }
2987 alias GtkPropagationLimit PropagationLimit;
2988 
2989 /**
2990  * Describes the stage at which events are fed into a [class@EventController].
2991  */
2992 public enum GtkPropagationPhase
2993 {
2994 	/**
2995 	 * Events are not delivered.
2996 	 */
2997 	NONE = 0,
2998 	/**
2999 	 * Events are delivered in the capture phase. The
3000 	 * capture phase happens before the bubble phase, runs from the toplevel down
3001 	 * to the event widget. This option should only be used on containers that
3002 	 * might possibly handle events before their children do.
3003 	 */
3004 	CAPTURE = 1,
3005 	/**
3006 	 * Events are delivered in the bubble phase. The bubble
3007 	 * phase happens after the capture phase, and before the default handlers
3008 	 * are run. This phase runs from the event widget, up to the toplevel.
3009 	 */
3010 	BUBBLE = 2,
3011 	/**
3012 	 * Events are delivered in the default widget event handlers,
3013 	 * note that widget implementations must chain up on button, motion, touch and
3014 	 * grab broken handlers for controllers in this phase to be run.
3015 	 */
3016 	TARGET = 3,
3017 }
3018 alias GtkPropagationPhase PropagationPhase;
3019 
3020 /**
3021  * Error codes for `GtkRecentManager` operations
3022  */
3023 public enum GtkRecentManagerError
3024 {
3025 	/**
3026 	 * the URI specified does not exists in
3027 	 * the recently used resources list.
3028 	 */
3029 	NOT_FOUND = 0,
3030 	/**
3031 	 * the URI specified is not valid.
3032 	 */
3033 	INVALID_URI = 1,
3034 	/**
3035 	 * the supplied string is not
3036 	 * UTF-8 encoded.
3037 	 */
3038 	INVALID_ENCODING = 2,
3039 	/**
3040 	 * no application has registered
3041 	 * the specified item.
3042 	 */
3043 	NOT_REGISTERED = 3,
3044 	/**
3045 	 * failure while reading the recently used
3046 	 * resources file.
3047 	 */
3048 	READ = 4,
3049 	/**
3050 	 * failure while writing the recently used
3051 	 * resources file.
3052 	 */
3053 	WRITE = 5,
3054 	/**
3055 	 * unspecified error.
3056 	 */
3057 	UNKNOWN = 6,
3058 }
3059 alias GtkRecentManagerError RecentManagerError;
3060 
3061 /**
3062  * Predefined values for use as response ids in gtk_dialog_add_button().
3063  *
3064  * All predefined values are negative; GTK leaves values of 0 or greater for
3065  * application-defined response ids.
3066  */
3067 public enum GtkResponseType
3068 {
3069 	/**
3070 	 * Returned if an action widget has no response id,
3071 	 * or if the dialog gets programmatically hidden or destroyed
3072 	 */
3073 	NONE = -1,
3074 	/**
3075 	 * Generic response id, not used by GTK dialogs
3076 	 */
3077 	REJECT = -2,
3078 	/**
3079 	 * Generic response id, not used by GTK dialogs
3080 	 */
3081 	ACCEPT = -3,
3082 	/**
3083 	 * Returned if the dialog is deleted
3084 	 */
3085 	DELETE_EVENT = -4,
3086 	/**
3087 	 * Returned by OK buttons in GTK dialogs
3088 	 */
3089 	OK = -5,
3090 	/**
3091 	 * Returned by Cancel buttons in GTK dialogs
3092 	 */
3093 	CANCEL = -6,
3094 	/**
3095 	 * Returned by Close buttons in GTK dialogs
3096 	 */
3097 	CLOSE = -7,
3098 	/**
3099 	 * Returned by Yes buttons in GTK dialogs
3100 	 */
3101 	YES = -8,
3102 	/**
3103 	 * Returned by No buttons in GTK dialogs
3104 	 */
3105 	NO = -9,
3106 	/**
3107 	 * Returned by Apply buttons in GTK dialogs
3108 	 */
3109 	APPLY = -10,
3110 	/**
3111 	 * Returned by Help buttons in GTK dialogs
3112 	 */
3113 	HELP = -11,
3114 }
3115 alias GtkResponseType ResponseType;
3116 
3117 /**
3118  * These enumeration values describe the possible transitions
3119  * when the child of a `GtkRevealer` widget is shown or hidden.
3120  */
3121 public enum GtkRevealerTransitionType
3122 {
3123 	/**
3124 	 * No transition
3125 	 */
3126 	NONE = 0,
3127 	/**
3128 	 * Fade in
3129 	 */
3130 	CROSSFADE = 1,
3131 	/**
3132 	 * Slide in from the left
3133 	 */
3134 	SLIDE_RIGHT = 2,
3135 	/**
3136 	 * Slide in from the right
3137 	 */
3138 	SLIDE_LEFT = 3,
3139 	/**
3140 	 * Slide in from the bottom
3141 	 */
3142 	SLIDE_UP = 4,
3143 	/**
3144 	 * Slide in from the top
3145 	 */
3146 	SLIDE_DOWN = 5,
3147 	/**
3148 	 * Floop in from the left
3149 	 */
3150 	SWING_RIGHT = 6,
3151 	/**
3152 	 * Floop in from the right
3153 	 */
3154 	SWING_LEFT = 7,
3155 	/**
3156 	 * Floop in from the bottom
3157 	 */
3158 	SWING_UP = 8,
3159 	/**
3160 	 * Floop in from the top
3161 	 */
3162 	SWING_DOWN = 9,
3163 }
3164 alias GtkRevealerTransitionType RevealerTransitionType;
3165 
3166 /**
3167  * Passed as argument to various keybinding signals.
3168  */
3169 public enum GtkScrollStep
3170 {
3171 	/**
3172 	 * Scroll in steps.
3173 	 */
3174 	STEPS = 0,
3175 	/**
3176 	 * Scroll by pages.
3177 	 */
3178 	PAGES = 1,
3179 	/**
3180 	 * Scroll to ends.
3181 	 */
3182 	ENDS = 2,
3183 	/**
3184 	 * Scroll in horizontal steps.
3185 	 */
3186 	HORIZONTAL_STEPS = 3,
3187 	/**
3188 	 * Scroll by horizontal pages.
3189 	 */
3190 	HORIZONTAL_PAGES = 4,
3191 	/**
3192 	 * Scroll to the horizontal ends.
3193 	 */
3194 	HORIZONTAL_ENDS = 5,
3195 }
3196 alias GtkScrollStep ScrollStep;
3197 
3198 /**
3199  * Scrolling types.
3200  */
3201 public enum GtkScrollType
3202 {
3203 	/**
3204 	 * No scrolling.
3205 	 */
3206 	NONE = 0,
3207 	/**
3208 	 * Jump to new location.
3209 	 */
3210 	JUMP = 1,
3211 	/**
3212 	 * Step backward.
3213 	 */
3214 	STEP_BACKWARD = 2,
3215 	/**
3216 	 * Step forward.
3217 	 */
3218 	STEP_FORWARD = 3,
3219 	/**
3220 	 * Page backward.
3221 	 */
3222 	PAGE_BACKWARD = 4,
3223 	/**
3224 	 * Page forward.
3225 	 */
3226 	PAGE_FORWARD = 5,
3227 	/**
3228 	 * Step up.
3229 	 */
3230 	STEP_UP = 6,
3231 	/**
3232 	 * Step down.
3233 	 */
3234 	STEP_DOWN = 7,
3235 	/**
3236 	 * Page up.
3237 	 */
3238 	PAGE_UP = 8,
3239 	/**
3240 	 * Page down.
3241 	 */
3242 	PAGE_DOWN = 9,
3243 	/**
3244 	 * Step to the left.
3245 	 */
3246 	STEP_LEFT = 10,
3247 	/**
3248 	 * Step to the right.
3249 	 */
3250 	STEP_RIGHT = 11,
3251 	/**
3252 	 * Page to the left.
3253 	 */
3254 	PAGE_LEFT = 12,
3255 	/**
3256 	 * Page to the right.
3257 	 */
3258 	PAGE_RIGHT = 13,
3259 	/**
3260 	 * Scroll to start.
3261 	 */
3262 	START = 14,
3263 	/**
3264 	 * Scroll to end.
3265 	 */
3266 	END = 15,
3267 }
3268 alias GtkScrollType ScrollType;
3269 
3270 /**
3271  * Defines the policy to be used in a scrollable widget when updating
3272  * the scrolled window adjustments in a given orientation.
3273  */
3274 public enum GtkScrollablePolicy
3275 {
3276 	/**
3277 	 * Scrollable adjustments are based on the minimum size
3278 	 */
3279 	MINIMUM = 0,
3280 	/**
3281 	 * Scrollable adjustments are based on the natural size
3282 	 */
3283 	NATURAL = 1,
3284 }
3285 alias GtkScrollablePolicy ScrollablePolicy;
3286 
3287 /**
3288  * Used to control what selections users are allowed to make.
3289  */
3290 public enum GtkSelectionMode
3291 {
3292 	/**
3293 	 * No selection is possible.
3294 	 */
3295 	NONE = 0,
3296 	/**
3297 	 * Zero or one element may be selected.
3298 	 */
3299 	SINGLE = 1,
3300 	/**
3301 	 * Exactly one element is selected.
3302 	 * In some circumstances, such as initially or during a search
3303 	 * operation, it’s possible for no element to be selected with
3304 	 * %GTK_SELECTION_BROWSE. What is really enforced is that the user
3305 	 * can’t deselect a currently selected element except by selecting
3306 	 * another element.
3307 	 */
3308 	BROWSE = 2,
3309 	/**
3310 	 * Any number of elements may be selected.
3311 	 * The Ctrl key may be used to enlarge the selection, and Shift
3312 	 * key to select between the focus and the child pointed to.
3313 	 * Some widgets may also allow Click-drag to select a range of elements.
3314 	 */
3315 	MULTIPLE = 3,
3316 }
3317 alias GtkSelectionMode SelectionMode;
3318 
3319 /**
3320  * Determines how GTK handles the sensitivity of various controls,
3321  * such as combo box buttons.
3322  */
3323 public enum GtkSensitivityType
3324 {
3325 	/**
3326 	 * The control is made insensitive if no
3327 	 * action can be triggered
3328 	 */
3329 	AUTO = 0,
3330 	/**
3331 	 * The control is always sensitive
3332 	 */
3333 	ON = 1,
3334 	/**
3335 	 * The control is always insensitive
3336 	 */
3337 	OFF = 2,
3338 }
3339 alias GtkSensitivityType SensitivityType;
3340 
3341 /**
3342  * List of flags that can be passed to action activation.
3343  *
3344  * More flags may be added in the future.
3345  */
3346 public enum GtkShortcutActionFlags
3347 {
3348 	/**
3349 	 * The action is the only
3350 	 * action that can be activated. If this flag is not set,
3351 	 * a future activation may select a different action.
3352 	 */
3353 	EXCLUSIVE = 1,
3354 }
3355 alias GtkShortcutActionFlags ShortcutActionFlags;
3356 
3357 /**
3358  * Describes where [class@Shortcut]s added to a
3359  * [class@ShortcutController] get handled.
3360  */
3361 public enum GtkShortcutScope
3362 {
3363 	/**
3364 	 * Shortcuts are handled inside
3365 	 * the widget the controller belongs to.
3366 	 */
3367 	LOCAL = 0,
3368 	/**
3369 	 * Shortcuts are handled by
3370 	 * the first ancestor that is a [iface@ShortcutManager]
3371 	 */
3372 	MANAGED = 1,
3373 	/**
3374 	 * Shortcuts are handled by
3375 	 * the root widget.
3376 	 */
3377 	GLOBAL = 2,
3378 }
3379 alias GtkShortcutScope ShortcutScope;
3380 
3381 /**
3382  * GtkShortcutType specifies the kind of shortcut that is being described.
3383  *
3384  * More values may be added to this enumeration over time.
3385  */
3386 public enum GtkShortcutType
3387 {
3388 	/**
3389 	 * The shortcut is a keyboard accelerator. The GtkShortcutsShortcut:accelerator
3390 	 * property will be used.
3391 	 */
3392 	ACCELERATOR = 0,
3393 	/**
3394 	 * The shortcut is a pinch gesture. GTK provides an icon and subtitle.
3395 	 */
3396 	GESTURE_PINCH = 1,
3397 	/**
3398 	 * The shortcut is a stretch gesture. GTK provides an icon and subtitle.
3399 	 */
3400 	GESTURE_STRETCH = 2,
3401 	/**
3402 	 * The shortcut is a clockwise rotation gesture. GTK provides an icon and subtitle.
3403 	 */
3404 	GESTURE_ROTATE_CLOCKWISE = 3,
3405 	/**
3406 	 * The shortcut is a counterclockwise rotation gesture. GTK provides an icon and subtitle.
3407 	 */
3408 	GESTURE_ROTATE_COUNTERCLOCKWISE = 4,
3409 	/**
3410 	 * The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
3411 	 */
3412 	GESTURE_TWO_FINGER_SWIPE_LEFT = 5,
3413 	/**
3414 	 * The shortcut is a two-finger swipe gesture. GTK provides an icon and subtitle.
3415 	 */
3416 	GESTURE_TWO_FINGER_SWIPE_RIGHT = 6,
3417 	/**
3418 	 * The shortcut is a gesture. The GtkShortcutsShortcut:icon property will be
3419 	 * used.
3420 	 */
3421 	GESTURE = 7,
3422 	/**
3423 	 * The shortcut is a swipe gesture. GTK provides an icon and subtitle.
3424 	 */
3425 	GESTURE_SWIPE_LEFT = 8,
3426 	/**
3427 	 * The shortcut is a swipe gesture. GTK provides an icon and subtitle.
3428 	 */
3429 	GESTURE_SWIPE_RIGHT = 9,
3430 }
3431 alias GtkShortcutType ShortcutType;
3432 
3433 /**
3434  * The mode of the size group determines the directions in which the size
3435  * group affects the requested sizes of its component widgets.
3436  */
3437 public enum GtkSizeGroupMode
3438 {
3439 	/**
3440 	 * group has no effect
3441 	 */
3442 	NONE = 0,
3443 	/**
3444 	 * group affects horizontal requisition
3445 	 */
3446 	HORIZONTAL = 1,
3447 	/**
3448 	 * group affects vertical requisition
3449 	 */
3450 	VERTICAL = 2,
3451 	/**
3452 	 * group affects both horizontal and vertical requisition
3453 	 */
3454 	BOTH = 3,
3455 }
3456 alias GtkSizeGroupMode SizeGroupMode;
3457 
3458 /**
3459  * Specifies a preference for height-for-width or
3460  * width-for-height geometry management.
3461  */
3462 public enum GtkSizeRequestMode
3463 {
3464 	/**
3465 	 * Prefer height-for-width geometry management
3466 	 */
3467 	HEIGHT_FOR_WIDTH = 0,
3468 	/**
3469 	 * Prefer width-for-height geometry management
3470 	 */
3471 	WIDTH_FOR_HEIGHT = 1,
3472 	/**
3473 	 * Don’t trade height-for-width or width-for-height
3474 	 */
3475 	CONSTANT_SIZE = 2,
3476 }
3477 alias GtkSizeRequestMode SizeRequestMode;
3478 
3479 /**
3480  * Determines the direction of a sort.
3481  */
3482 public enum GtkSortType
3483 {
3484 	/**
3485 	 * Sorting is in ascending order.
3486 	 */
3487 	ASCENDING = 0,
3488 	/**
3489 	 * Sorting is in descending order.
3490 	 */
3491 	DESCENDING = 1,
3492 }
3493 alias GtkSortType SortType;
3494 
3495 /**
3496  * Describes changes in a sorter in more detail and allows users
3497  * to optimize resorting.
3498  */
3499 public enum GtkSorterChange
3500 {
3501 	/**
3502 	 * The sorter change cannot be described
3503 	 * by any of the other enumeration values
3504 	 */
3505 	DIFFERENT = 0,
3506 	/**
3507 	 * The sort order was inverted. Comparisons
3508 	 * that returned %GTK_ORDERING_SMALLER now return %GTK_ORDERING_LARGER
3509 	 * and vice versa. Other comparisons return the same values as before.
3510 	 */
3511 	INVERTED = 1,
3512 	/**
3513 	 * The sorter is less strict: Comparisons
3514 	 * may now return %GTK_ORDERING_EQUAL that did not do so before.
3515 	 */
3516 	LESS_STRICT = 2,
3517 	/**
3518 	 * The sorter is more strict: Comparisons
3519 	 * that did return %GTK_ORDERING_EQUAL may not do so anymore.
3520 	 */
3521 	MORE_STRICT = 3,
3522 }
3523 alias GtkSorterChange SorterChange;
3524 
3525 /**
3526  * Describes the type of order that a `GtkSorter` may produce.
3527  */
3528 public enum GtkSorterOrder
3529 {
3530 	/**
3531 	 * A partial order. Any `GtkOrdering` is possible.
3532 	 */
3533 	PARTIAL = 0,
3534 	/**
3535 	 * No order, all elements are considered equal.
3536 	 * gtk_sorter_compare() will only return %GTK_ORDERING_EQUAL.
3537 	 */
3538 	NONE = 1,
3539 	/**
3540 	 * A total order. gtk_sorter_compare() will only
3541 	 * return %GTK_ORDERING_EQUAL if an item is compared with itself. Two
3542 	 * different items will never cause this value to be returned.
3543 	 */
3544 	TOTAL = 2,
3545 }
3546 alias GtkSorterOrder SorterOrder;
3547 
3548 /**
3549  * Determines whether the spin button displays values outside the adjustment
3550  * bounds.
3551  *
3552  * See [method@Gtk.SpinButton.set_update_policy].
3553  */
3554 public enum GtkSpinButtonUpdatePolicy
3555 {
3556 	/**
3557 	 * When refreshing your `GtkSpinButton`, the value is
3558 	 * always displayed
3559 	 */
3560 	ALWAYS = 0,
3561 	/**
3562 	 * When refreshing your `GtkSpinButton`, the value is
3563 	 * only displayed if it is valid within the bounds of the spin button's
3564 	 * adjustment
3565 	 */
3566 	IF_VALID = 1,
3567 }
3568 alias GtkSpinButtonUpdatePolicy SpinButtonUpdatePolicy;
3569 
3570 /**
3571  * The values of the GtkSpinType enumeration are used to specify the
3572  * change to make in gtk_spin_button_spin().
3573  */
3574 public enum GtkSpinType
3575 {
3576 	/**
3577 	 * Increment by the adjustments step increment.
3578 	 */
3579 	STEP_FORWARD = 0,
3580 	/**
3581 	 * Decrement by the adjustments step increment.
3582 	 */
3583 	STEP_BACKWARD = 1,
3584 	/**
3585 	 * Increment by the adjustments page increment.
3586 	 */
3587 	PAGE_FORWARD = 2,
3588 	/**
3589 	 * Decrement by the adjustments page increment.
3590 	 */
3591 	PAGE_BACKWARD = 3,
3592 	/**
3593 	 * Go to the adjustments lower bound.
3594 	 */
3595 	HOME = 4,
3596 	/**
3597 	 * Go to the adjustments upper bound.
3598 	 */
3599 	END = 5,
3600 	/**
3601 	 * Change by a specified amount.
3602 	 */
3603 	USER_DEFINED = 6,
3604 }
3605 alias GtkSpinType SpinType;
3606 
3607 /**
3608  * Possible transitions between pages in a `GtkStack` widget.
3609  *
3610  * New values may be added to this enumeration over time.
3611  */
3612 public enum GtkStackTransitionType
3613 {
3614 	/**
3615 	 * No transition
3616 	 */
3617 	NONE = 0,
3618 	/**
3619 	 * A cross-fade
3620 	 */
3621 	CROSSFADE = 1,
3622 	/**
3623 	 * Slide from left to right
3624 	 */
3625 	SLIDE_RIGHT = 2,
3626 	/**
3627 	 * Slide from right to left
3628 	 */
3629 	SLIDE_LEFT = 3,
3630 	/**
3631 	 * Slide from bottom up
3632 	 */
3633 	SLIDE_UP = 4,
3634 	/**
3635 	 * Slide from top down
3636 	 */
3637 	SLIDE_DOWN = 5,
3638 	/**
3639 	 * Slide from left or right according to the children order
3640 	 */
3641 	SLIDE_LEFT_RIGHT = 6,
3642 	/**
3643 	 * Slide from top down or bottom up according to the order
3644 	 */
3645 	SLIDE_UP_DOWN = 7,
3646 	/**
3647 	 * Cover the old page by sliding up
3648 	 */
3649 	OVER_UP = 8,
3650 	/**
3651 	 * Cover the old page by sliding down
3652 	 */
3653 	OVER_DOWN = 9,
3654 	/**
3655 	 * Cover the old page by sliding to the left
3656 	 */
3657 	OVER_LEFT = 10,
3658 	/**
3659 	 * Cover the old page by sliding to the right
3660 	 */
3661 	OVER_RIGHT = 11,
3662 	/**
3663 	 * Uncover the new page by sliding up
3664 	 */
3665 	UNDER_UP = 12,
3666 	/**
3667 	 * Uncover the new page by sliding down
3668 	 */
3669 	UNDER_DOWN = 13,
3670 	/**
3671 	 * Uncover the new page by sliding to the left
3672 	 */
3673 	UNDER_LEFT = 14,
3674 	/**
3675 	 * Uncover the new page by sliding to the right
3676 	 */
3677 	UNDER_RIGHT = 15,
3678 	/**
3679 	 * Cover the old page sliding up or uncover the new page sliding down, according to order
3680 	 */
3681 	OVER_UP_DOWN = 16,
3682 	/**
3683 	 * Cover the old page sliding down or uncover the new page sliding up, according to order
3684 	 */
3685 	OVER_DOWN_UP = 17,
3686 	/**
3687 	 * Cover the old page sliding left or uncover the new page sliding right, according to order
3688 	 */
3689 	OVER_LEFT_RIGHT = 18,
3690 	/**
3691 	 * Cover the old page sliding right or uncover the new page sliding left, according to order
3692 	 */
3693 	OVER_RIGHT_LEFT = 19,
3694 	/**
3695 	 * Pretend the pages are sides of a cube and rotate that cube to the left
3696 	 */
3697 	ROTATE_LEFT = 20,
3698 	/**
3699 	 * Pretend the pages are sides of a cube and rotate that cube to the right
3700 	 */
3701 	ROTATE_RIGHT = 21,
3702 	/**
3703 	 * Pretend the pages are sides of a cube and rotate that cube to the left or right according to the children order
3704 	 */
3705 	ROTATE_LEFT_RIGHT = 22,
3706 }
3707 alias GtkStackTransitionType StackTransitionType;
3708 
3709 /**
3710  * Describes a widget state.
3711  *
3712  * Widget states are used to match the widget against CSS pseudo-classes.
3713  * Note that GTK extends the regular CSS classes and sometimes uses
3714  * different names.
3715  */
3716 public enum GtkStateFlags
3717 {
3718 	/**
3719 	 * State during normal operation
3720 	 */
3721 	NORMAL = 0,
3722 	/**
3723 	 * Widget is active
3724 	 */
3725 	ACTIVE = 1,
3726 	/**
3727 	 * Widget has a mouse pointer over it
3728 	 */
3729 	PRELIGHT = 2,
3730 	/**
3731 	 * Widget is selected
3732 	 */
3733 	SELECTED = 4,
3734 	/**
3735 	 * Widget is insensitive
3736 	 */
3737 	INSENSITIVE = 8,
3738 	/**
3739 	 * Widget is inconsistent
3740 	 */
3741 	INCONSISTENT = 16,
3742 	/**
3743 	 * Widget has the keyboard focus
3744 	 */
3745 	FOCUSED = 32,
3746 	/**
3747 	 * Widget is in a background toplevel window
3748 	 */
3749 	BACKDROP = 64,
3750 	/**
3751 	 * Widget is in left-to-right text direction
3752 	 */
3753 	DIR_LTR = 128,
3754 	/**
3755 	 * Widget is in right-to-left text direction
3756 	 */
3757 	DIR_RTL = 256,
3758 	/**
3759 	 * Widget is a link
3760 	 */
3761 	LINK = 512,
3762 	/**
3763 	 * The location the widget points to has already been visited
3764 	 */
3765 	VISITED = 1024,
3766 	/**
3767 	 * Widget is checked
3768 	 */
3769 	CHECKED = 2048,
3770 	/**
3771 	 * Widget is highlighted as a drop target for DND
3772 	 */
3773 	DROP_ACTIVE = 4096,
3774 	/**
3775 	 * Widget has the visible focus
3776 	 */
3777 	FOCUS_VISIBLE = 8192,
3778 	/**
3779 	 * Widget contains the keyboard focus
3780 	 */
3781 	FOCUS_WITHIN = 16384,
3782 }
3783 alias GtkStateFlags StateFlags;
3784 
3785 /**
3786  * Specifies how search strings are matched inside text.
3787  */
3788 public enum GtkStringFilterMatchMode
3789 {
3790 	/**
3791 	 * The search string and
3792 	 * text must match exactly.
3793 	 */
3794 	EXACT = 0,
3795 	/**
3796 	 * The search string
3797 	 * must be contained as a substring inside the text.
3798 	 */
3799 	SUBSTRING = 1,
3800 	/**
3801 	 * The text must begin
3802 	 * with the search string.
3803 	 */
3804 	PREFIX = 2,
3805 }
3806 alias GtkStringFilterMatchMode StringFilterMatchMode;
3807 
3808 /**
3809  * Flags that modify the behavior of gtk_style_context_to_string().
3810  *
3811  * New values may be added to this enumeration.
3812  */
3813 public enum GtkStyleContextPrintFlags
3814 {
3815 	/**
3816 	 * Default value.
3817 	 */
3818 	NONE = 0,
3819 	/**
3820 	 * Print the entire tree of
3821 	 * CSS nodes starting at the style context's node
3822 	 */
3823 	RECURSE = 1,
3824 	/**
3825 	 * Show the values of the
3826 	 * CSS properties for each node
3827 	 */
3828 	SHOW_STYLE = 2,
3829 	/**
3830 	 * Show information about
3831 	 * what changes affect the styles
3832 	 */
3833 	SHOW_CHANGE = 4,
3834 }
3835 alias GtkStyleContextPrintFlags StyleContextPrintFlags;
3836 
3837 /**
3838  * The indexes of colors passed to symbolic color rendering, such as
3839  * [vfunc@Gtk.SymbolicPaintable.snapshot_symbolic].
3840  *
3841  * More values may be added over time.
3842  *
3843  * Since: 4.6
3844  */
3845 public enum GtkSymbolicColor
3846 {
3847 	/**
3848 	 * The default foreground color
3849 	 */
3850 	FOREGROUND = 0,
3851 	/**
3852 	 * Indication color for errors
3853 	 */
3854 	ERROR = 1,
3855 	/**
3856 	 * Indication color for warnings
3857 	 */
3858 	WARNING = 2,
3859 	/**
3860 	 * Indication color for success
3861 	 */
3862 	SUCCESS = 3,
3863 }
3864 alias GtkSymbolicColor SymbolicColor;
3865 
3866 /**
3867  * Values that can be passed to the [vfunc@Gtk.Widget.system_setting_changed]
3868  * vfunc.
3869  *
3870  * The values indicate which system setting has changed.
3871  * Widgets may need to drop caches, or react otherwise.
3872  *
3873  * Most of the values correspond to [class@Settings] properties.
3874  *
3875  * More values may be added over time.
3876  */
3877 public enum GtkSystemSetting
3878 {
3879 	/**
3880 	 * the [property@Gtk.Settings:gtk-xft-dpi] setting has changed
3881 	 */
3882 	DPI = 0,
3883 	/**
3884 	 * The [property@Gtk.Settings:gtk-font-name] setting has changed
3885 	 */
3886 	FONT_NAME = 1,
3887 	/**
3888 	 * The font configuration has changed in a way that
3889 	 * requires text to be redrawn. This can be any of the
3890 	 * [property@Gtk.Settings:gtk-xft-antialias],
3891 	 * [property@Gtk.Settings:gtk-xft-hinting],
3892 	 * [property@Gtk.Settings:gtk-xft-hintstyle],
3893 	 * [property@Gtk.Settings:gtk-xft-rgba] or
3894 	 * [property@Gtk.Settings:gtk-fontconfig-timestamp] settings
3895 	 */
3896 	FONT_CONFIG = 2,
3897 	/**
3898 	 * The display has changed
3899 	 */
3900 	DISPLAY = 3,
3901 	/**
3902 	 * The icon theme has changed in a way that requires
3903 	 * icons to be looked up again
3904 	 */
3905 	ICON_THEME = 4,
3906 }
3907 alias GtkSystemSetting SystemSetting;
3908 
3909 /**
3910  * Reading directions for text.
3911  */
3912 public enum GtkTextDirection
3913 {
3914 	/**
3915 	 * No direction.
3916 	 */
3917 	NONE = 0,
3918 	/**
3919 	 * Left to right text direction.
3920 	 */
3921 	LTR = 1,
3922 	/**
3923 	 * Right to left text direction.
3924 	 */
3925 	RTL = 2,
3926 }
3927 alias GtkTextDirection TextDirection;
3928 
3929 /**
3930  * Granularity types that extend the text selection. Use the
3931  * `GtkTextView::extend-selection` signal to customize the selection.
3932  */
3933 public enum GtkTextExtendSelection
3934 {
3935 	/**
3936 	 * Selects the current word. It is triggered by
3937 	 * a double-click for example.
3938 	 */
3939 	WORD = 0,
3940 	/**
3941 	 * Selects the current line. It is triggered by
3942 	 * a triple-click for example.
3943 	 */
3944 	LINE = 1,
3945 }
3946 alias GtkTextExtendSelection TextExtendSelection;
3947 
3948 /**
3949  * Flags affecting how a search is done.
3950  *
3951  * If neither %GTK_TEXT_SEARCH_VISIBLE_ONLY nor %GTK_TEXT_SEARCH_TEXT_ONLY are
3952  * enabled, the match must be exact; the special 0xFFFC character will match
3953  * embedded paintables or child widgets.
3954  */
3955 public enum GtkTextSearchFlags
3956 {
3957 	/**
3958 	 * Search only visible data. A search match may
3959 	 * have invisible text interspersed.
3960 	 */
3961 	VISIBLE_ONLY = 1,
3962 	/**
3963 	 * Search only text. A match may have paintables or
3964 	 * child widgets mixed inside the matched range.
3965 	 */
3966 	TEXT_ONLY = 2,
3967 	/**
3968 	 * The text will be matched regardless of
3969 	 * what case it is in.
3970 	 */
3971 	CASE_INSENSITIVE = 4,
3972 }
3973 alias GtkTextSearchFlags TextSearchFlags;
3974 
3975 /**
3976  * Used to reference the layers of `GtkTextView` for the purpose of customized
3977  * drawing with the ::snapshot_layer vfunc.
3978  */
3979 public enum GtkTextViewLayer
3980 {
3981 	/**
3982 	 * The layer rendered below the text (but above the background).
3983 	 */
3984 	BELOW_TEXT = 0,
3985 	/**
3986 	 * The layer rendered above the text.
3987 	 */
3988 	ABOVE_TEXT = 1,
3989 }
3990 alias GtkTextViewLayer TextViewLayer;
3991 
3992 /**
3993  * Used to reference the parts of `GtkTextView`.
3994  */
3995 public enum GtkTextWindowType
3996 {
3997 	/**
3998 	 * Window that floats over scrolling areas.
3999 	 */
4000 	WIDGET = 1,
4001 	/**
4002 	 * Scrollable text window.
4003 	 */
4004 	TEXT = 2,
4005 	/**
4006 	 * Left side border window.
4007 	 */
4008 	LEFT = 3,
4009 	/**
4010 	 * Right side border window.
4011 	 */
4012 	RIGHT = 4,
4013 	/**
4014 	 * Top border window.
4015 	 */
4016 	TOP = 5,
4017 	/**
4018 	 * Bottom border window.
4019 	 */
4020 	BOTTOM = 6,
4021 }
4022 alias GtkTextWindowType TextWindowType;
4023 
4024 /**
4025  * These flags indicate various properties of a `GtkTreeModel`.
4026  *
4027  * They are returned by [method@Gtk.TreeModel.get_flags], and must be
4028  * static for the lifetime of the object. A more complete description
4029  * of %GTK_TREE_MODEL_ITERS_PERSIST can be found in the overview of
4030  * this section.
4031  */
4032 public enum GtkTreeModelFlags
4033 {
4034 	/**
4035 	 * iterators survive all signals
4036 	 * emitted by the tree
4037 	 */
4038 	ITERS_PERSIST = 1,
4039 	/**
4040 	 * the model is a list only, and never
4041 	 * has children
4042 	 */
4043 	LIST_ONLY = 2,
4044 }
4045 alias GtkTreeModelFlags TreeModelFlags;
4046 
4047 /**
4048  * The sizing method the column uses to determine its width.  Please note
4049  * that %GTK_TREE_VIEW_COLUMN_AUTOSIZE are inefficient for large views, and
4050  * can make columns appear choppy.
4051  */
4052 public enum GtkTreeViewColumnSizing
4053 {
4054 	/**
4055 	 * Columns only get bigger in reaction to changes in the model
4056 	 */
4057 	GROW_ONLY = 0,
4058 	/**
4059 	 * Columns resize to be the optimal size every time the model changes.
4060 	 */
4061 	AUTOSIZE = 1,
4062 	/**
4063 	 * Columns are a fixed numbers of pixels wide.
4064 	 */
4065 	FIXED = 2,
4066 }
4067 alias GtkTreeViewColumnSizing TreeViewColumnSizing;
4068 
4069 /**
4070  * An enum for determining where a dropped row goes.
4071  */
4072 public enum GtkTreeViewDropPosition
4073 {
4074 	/**
4075 	 * dropped row is inserted before
4076 	 */
4077 	BEFORE = 0,
4078 	/**
4079 	 * dropped row is inserted after
4080 	 */
4081 	AFTER = 1,
4082 	/**
4083 	 * dropped row becomes a child or is inserted before
4084 	 */
4085 	INTO_OR_BEFORE = 2,
4086 	/**
4087 	 * dropped row becomes a child or is inserted after
4088 	 */
4089 	INTO_OR_AFTER = 3,
4090 }
4091 alias GtkTreeViewDropPosition TreeViewDropPosition;
4092 
4093 /**
4094  * Used to indicate which grid lines to draw in a tree view.
4095  */
4096 public enum GtkTreeViewGridLines
4097 {
4098 	/**
4099 	 * No grid lines.
4100 	 */
4101 	NONE = 0,
4102 	/**
4103 	 * Horizontal grid lines.
4104 	 */
4105 	HORIZONTAL = 1,
4106 	/**
4107 	 * Vertical grid lines.
4108 	 */
4109 	VERTICAL = 2,
4110 	/**
4111 	 * Horizontal and vertical grid lines.
4112 	 */
4113 	BOTH = 3,
4114 }
4115 alias GtkTreeViewGridLines TreeViewGridLines;
4116 
4117 /**
4118  * See also gtk_print_settings_set_paper_width().
4119  */
4120 public enum GtkUnit
4121 {
4122 	/**
4123 	 * No units.
4124 	 */
4125 	NONE = 0,
4126 	/**
4127 	 * Dimensions in points.
4128 	 */
4129 	POINTS = 1,
4130 	/**
4131 	 * Dimensions in inches.
4132 	 */
4133 	INCH = 2,
4134 	/**
4135 	 * Dimensions in millimeters
4136 	 */
4137 	MM = 3,
4138 }
4139 alias GtkUnit Unit;
4140 
4141 /**
4142  * Describes a type of line wrapping.
4143  */
4144 public enum GtkWrapMode
4145 {
4146 	/**
4147 	 * do not wrap lines; just make the text area wider
4148 	 */
4149 	NONE = 0,
4150 	/**
4151 	 * wrap text, breaking lines anywhere the cursor can
4152 	 * appear (between characters, usually - if you want to be technical,
4153 	 * between graphemes, see pango_get_log_attrs())
4154 	 */
4155 	CHAR = 1,
4156 	/**
4157 	 * wrap text, breaking lines in between words
4158 	 */
4159 	WORD = 2,
4160 	/**
4161 	 * wrap text, breaking lines in between words, or if
4162 	 * that is not enough, also between graphemes
4163 	 */
4164 	WORD_CHAR = 3,
4165 }
4166 alias GtkWrapMode WrapMode;
4167 
4168 struct GtkATContext;
4169 
4170 struct GtkATContextClass;
4171 
4172 struct GtkAboutDialog;
4173 
4174 struct GtkAccessible;
4175 
4176 struct GtkAccessibleInterface;
4177 
4178 struct GtkActionBar;
4179 
4180 struct GtkActionable;
4181 
4182 /**
4183  * The interface vtable for `GtkActionable`.
4184  */
4185 struct GtkActionableInterface
4186 {
4187 	GTypeInterface gIface;
4188 	/**
4189 	 *
4190 	 * Params:
4191 	 *     actionable = a `GtkActionable` widget
4192 	 * Returns: the action name
4193 	 */
4194 	extern(C) const(char)* function(GtkActionable* actionable) getActionName;
4195 	/** */
4196 	extern(C) void function(GtkActionable* actionable, const(char)* actionName) setActionName;
4197 	/**
4198 	 *
4199 	 * Params:
4200 	 *     actionable = a `GtkActionable` widget
4201 	 * Returns: the current target value
4202 	 */
4203 	extern(C) GVariant* function(GtkActionable* actionable) getActionTargetValue;
4204 	/** */
4205 	extern(C) void function(GtkActionable* actionable, GVariant* targetValue) setActionTargetValue;
4206 }
4207 
4208 struct GtkActivateAction;
4209 
4210 struct GtkActivateActionClass;
4211 
4212 struct GtkAdjustment
4213 {
4214 	GObject parentInstance;
4215 }
4216 
4217 struct GtkAdjustmentClass
4218 {
4219 	GObjectClass parentClass;
4220 	/** */
4221 	extern(C) void function(GtkAdjustment* adjustment) changed;
4222 	/** */
4223 	extern(C) void function(GtkAdjustment* adjustment) valueChanged;
4224 	/** */
4225 	extern(C) void function() GtkReserved1;
4226 	/** */
4227 	extern(C) void function() GtkReserved2;
4228 	/** */
4229 	extern(C) void function() GtkReserved3;
4230 	/** */
4231 	extern(C) void function() GtkReserved4;
4232 }
4233 
4234 struct GtkAlternativeTrigger;
4235 
4236 struct GtkAlternativeTriggerClass;
4237 
4238 struct GtkAnyFilter;
4239 
4240 struct GtkAnyFilterClass;
4241 
4242 struct GtkAppChooser;
4243 
4244 struct GtkAppChooserButton;
4245 
4246 struct GtkAppChooserDialog;
4247 
4248 struct GtkAppChooserWidget;
4249 
4250 struct GtkApplication
4251 {
4252 	GApplication parentInstance;
4253 }
4254 
4255 struct GtkApplicationClass
4256 {
4257 	/**
4258 	 * The parent class.
4259 	 */
4260 	GApplicationClass parentClass;
4261 	/** */
4262 	extern(C) void function(GtkApplication* application, GtkWindow* window) windowAdded;
4263 	/** */
4264 	extern(C) void function(GtkApplication* application, GtkWindow* window) windowRemoved;
4265 	void*[8] padding;
4266 }
4267 
4268 struct GtkApplicationWindow
4269 {
4270 	GtkWindow parentInstance;
4271 }
4272 
4273 struct GtkApplicationWindowClass
4274 {
4275 	/**
4276 	 * The parent class.
4277 	 */
4278 	GtkWindowClass parentClass;
4279 	void*[8] padding;
4280 }
4281 
4282 struct GtkAspectFrame;
4283 
4284 struct GtkAssistant;
4285 
4286 struct GtkAssistantPage;
4287 
4288 struct GtkBinLayout;
4289 
4290 struct GtkBinLayoutClass
4291 {
4292 	GtkLayoutManagerClass parentClass;
4293 }
4294 
4295 struct GtkBitset;
4296 
4297 struct GtkBitsetIter
4298 {
4299 	void*[10] privateData;
4300 }
4301 
4302 struct GtkBookmarkList;
4303 
4304 struct GtkBookmarkListClass
4305 {
4306 	GObjectClass parentClass;
4307 }
4308 
4309 struct GtkBoolFilter;
4310 
4311 struct GtkBoolFilterClass
4312 {
4313 	GtkFilterClass parentClass;
4314 }
4315 
4316 struct GtkBorder
4317 {
4318 	/**
4319 	 * The width of the left border
4320 	 */
4321 	short left;
4322 	/**
4323 	 * The width of the right border
4324 	 */
4325 	short right;
4326 	/**
4327 	 * The width of the top border
4328 	 */
4329 	short top;
4330 	/**
4331 	 * The width of the bottom border
4332 	 */
4333 	short bottom;
4334 }
4335 
4336 struct GtkBox
4337 {
4338 	GtkWidget parentInstance;
4339 }
4340 
4341 struct GtkBoxClass
4342 {
4343 	/**
4344 	 * The parent class.
4345 	 */
4346 	GtkWidgetClass parentClass;
4347 	void*[8] padding;
4348 }
4349 
4350 struct GtkBoxLayout;
4351 
4352 struct GtkBoxLayoutClass
4353 {
4354 	GtkLayoutManagerClass parentClass;
4355 }
4356 
4357 struct GtkBuildable;
4358 
4359 /**
4360  * The `GtkBuildableIface` interface contains methods that are
4361  * necessary to allow `GtkBuilder` to construct an object from
4362  * a `GtkBuilder` UI definition.
4363  */
4364 struct GtkBuildableIface
4365 {
4366 	/**
4367 	 * the parent class
4368 	 */
4369 	GTypeInterface gIface;
4370 	/** */
4371 	extern(C) void function(GtkBuildable* buildable, const(char)* id) setId;
4372 	/** */
4373 	extern(C) const(char)* function(GtkBuildable* buildable) getId;
4374 	/** */
4375 	extern(C) void function(GtkBuildable* buildable, GtkBuilder* builder, GObject* child, const(char)* type) addChild;
4376 	/** */
4377 	extern(C) void function(GtkBuildable* buildable, GtkBuilder* builder, const(char)* name, GValue* value) setBuildableProperty;
4378 	/** */
4379 	extern(C) GObject* function(GtkBuildable* buildable, GtkBuilder* builder, const(char)* name) constructChild;
4380 	/**
4381 	 *
4382 	 * Params:
4383 	 *     buildable = a `GtkBuildable`
4384 	 *     builder = a `GtkBuilder` used to construct this object
4385 	 *     child = child object or %NULL for non-child tags
4386 	 *     tagname = name of tag
4387 	 *     parser = a `GtkBuildableParser` to fill in
4388 	 *     data = return location for user data that will be passed in
4389 	 *         to parser functions
4390 	 * Returns: %TRUE if an object has a custom implementation, %FALSE
4391 	 *     if it doesn't.
4392 	 */
4393 	extern(C) int function(GtkBuildable* buildable, GtkBuilder* builder, GObject* child, const(char)* tagname, GtkBuildableParser* parser, void** data) customTagStart;
4394 	/** */
4395 	extern(C) void function(GtkBuildable* buildable, GtkBuilder* builder, GObject* child, const(char)* tagname, void* data) customTagEnd;
4396 	/** */
4397 	extern(C) void function(GtkBuildable* buildable, GtkBuilder* builder, GObject* child, const(char)* tagname, void* data) customFinished;
4398 	/** */
4399 	extern(C) void function(GtkBuildable* buildable, GtkBuilder* builder) parserFinished;
4400 	/**
4401 	 *
4402 	 * Params:
4403 	 *     buildable = a `GtkBuildable`
4404 	 *     builder = a `GtkBuilder`
4405 	 *     childname = name of child
4406 	 * Returns: the internal child of the buildable object
4407 	 */
4408 	extern(C) GObject* function(GtkBuildable* buildable, GtkBuilder* builder, const(char)* childname) getInternalChild;
4409 }
4410 
4411 struct GtkBuildableParseContext;
4412 
4413 /**
4414  * A sub-parser for `GtkBuildable` implementations.
4415  */
4416 struct GtkBuildableParser
4417 {
4418 	/** */
4419 	extern(C) void function(GtkBuildableParseContext* context, const(char)* elementName, char** attributeNames, char** attributeValues, void* userData, GError** err) startElement;
4420 	/** */
4421 	extern(C) void function(GtkBuildableParseContext* context, const(char)* elementName, void* userData, GError** err) endElement;
4422 	/** */
4423 	extern(C) void function(GtkBuildableParseContext* context, const(char)* text, size_t textLen, void* userData, GError** err) text;
4424 	/** */
4425 	extern(C) void function(GtkBuildableParseContext* context, GError* error, void* userData) error;
4426 	void*[4] padding;
4427 }
4428 
4429 struct GtkBuilder;
4430 
4431 struct GtkBuilderCScope
4432 {
4433 	GObject parentInstance;
4434 }
4435 
4436 struct GtkBuilderCScopeClass
4437 {
4438 	GObjectClass parentClass;
4439 }
4440 
4441 struct GtkBuilderClass;
4442 
4443 struct GtkBuilderListItemFactory;
4444 
4445 struct GtkBuilderListItemFactoryClass;
4446 
4447 struct GtkBuilderScope;
4448 
4449 /**
4450  * The virtual function table to implement for `GtkBuilderScope` implementations.
4451  * Default implementations for each function do exist, but they usually just fail,
4452  * so it is suggested that implementations implement all of them.
4453  */
4454 struct GtkBuilderScopeInterface
4455 {
4456 	GTypeInterface gIface;
4457 	/** */
4458 	extern(C) GType function(GtkBuilderScope* self, GtkBuilder* builder, const(char)* typeName) getTypeFromName;
4459 	/** */
4460 	extern(C) GType function(GtkBuilderScope* self, GtkBuilder* builder, const(char)* functionName) getTypeFromFunction;
4461 	/** */
4462 	extern(C) GClosure* function(GtkBuilderScope* self, GtkBuilder* builder, const(char)* functionName, GtkBuilderClosureFlags flags, GObject* object, GError** err) createClosure;
4463 }
4464 
4465 struct GtkButton
4466 {
4467 	GtkWidget parentInstance;
4468 }
4469 
4470 struct GtkButtonClass
4471 {
4472 	/**
4473 	 * The parent class.
4474 	 */
4475 	GtkWidgetClass parentClass;
4476 	/** */
4477 	extern(C) void function(GtkButton* button) clicked;
4478 	/** */
4479 	extern(C) void function(GtkButton* button) activate;
4480 	void*[8] padding;
4481 }
4482 
4483 struct GtkButtonPrivate;
4484 
4485 struct GtkCClosureExpression;
4486 
4487 struct GtkCalendar;
4488 
4489 struct GtkCallbackAction;
4490 
4491 struct GtkCallbackActionClass;
4492 
4493 struct GtkCellArea
4494 {
4495 	GObject parentInstance;
4496 }
4497 
4498 struct GtkCellAreaBox;
4499 
4500 struct GtkCellAreaClass
4501 {
4502 	GObjectClass parentClass;
4503 	/** */
4504 	extern(C) void function(GtkCellArea* area, GtkCellRenderer* renderer) add;
4505 	/** */
4506 	extern(C) void function(GtkCellArea* area, GtkCellRenderer* renderer) remove;
4507 	/** */
4508 	extern(C) void function(GtkCellArea* area, GtkCellCallback callback, void* callbackData) foreach_;
4509 	/** */
4510 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, GdkRectangle* cellArea, GdkRectangle* backgroundArea, GtkCellAllocCallback callback, void* callbackData) foreachAlloc;
4511 	/**
4512 	 *
4513 	 * Params:
4514 	 *     area = a `GtkCellArea`
4515 	 *     context = the `GtkCellArea`Context for this row of data.
4516 	 *     widget = the `GtkWidget` that @area is rendering to
4517 	 *     event = the `GdkEvent` to handle
4518 	 *     cellArea = the @widget relative coordinates for @area
4519 	 *     flags = the `GtkCellRenderer`State for @area in this row.
4520 	 * Returns: %TRUE if the event was handled by @area.
4521 	 */
4522 	extern(C) int function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, GdkEvent* event, GdkRectangle* cellArea, GtkCellRendererState flags) event;
4523 	/** */
4524 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, GtkSnapshot* snapshot, GdkRectangle* backgroundArea, GdkRectangle* cellArea, GtkCellRendererState flags, int paintFocus) snapshot;
4525 	/** */
4526 	extern(C) void function(GtkCellArea* area, GtkTreeModel* treeModel, GtkTreeIter* iter, int isExpander, int isExpanded) applyAttributes;
4527 	/**
4528 	 *
4529 	 * Params:
4530 	 *     area = a `GtkCellArea`
4531 	 * Returns: a newly created `GtkCellArea`Context which can be used with @area.
4532 	 */
4533 	extern(C) GtkCellAreaContext* function(GtkCellArea* area) createContext;
4534 	/**
4535 	 *
4536 	 * Params:
4537 	 *     area = a `GtkCellArea`
4538 	 *     context = the `GtkCellArea`Context to copy
4539 	 * Returns: a newly created `GtkCellArea`Context copy of @context.
4540 	 */
4541 	extern(C) GtkCellAreaContext* function(GtkCellArea* area, GtkCellAreaContext* context) copyContext;
4542 	/**
4543 	 *
4544 	 * Params:
4545 	 *     area = a `GtkCellArea`
4546 	 * Returns: The `GtkSizeRequestMode` preferred by @area.
4547 	 */
4548 	extern(C) GtkSizeRequestMode function(GtkCellArea* area) getRequestMode;
4549 	/** */
4550 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, int* minimumWidth, int* naturalWidth) getPreferredWidth;
4551 	/** */
4552 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, int width, int* minimumHeight, int* naturalHeight) getPreferredHeightForWidth;
4553 	/** */
4554 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, int* minimumHeight, int* naturalHeight) getPreferredHeight;
4555 	/** */
4556 	extern(C) void function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, int height, int* minimumWidth, int* naturalWidth) getPreferredWidthForHeight;
4557 	/** */
4558 	extern(C) void function(GtkCellArea* area, GtkCellRenderer* renderer, uint propertyId, GValue* value, GParamSpec* pspec) setCellProperty;
4559 	/** */
4560 	extern(C) void function(GtkCellArea* area, GtkCellRenderer* renderer, uint propertyId, GValue* value, GParamSpec* pspec) getCellProperty;
4561 	/**
4562 	 *
4563 	 * Params:
4564 	 *     area = a `GtkCellArea`
4565 	 *     direction = the `GtkDirectionType`
4566 	 * Returns: %TRUE if focus remains inside @area as a result of this call.
4567 	 */
4568 	extern(C) int function(GtkCellArea* area, GtkDirectionType direction) focus;
4569 	/**
4570 	 *
4571 	 * Params:
4572 	 *     area = a `GtkCellArea`
4573 	 * Returns: whether @area can do anything when activated.
4574 	 */
4575 	extern(C) int function(GtkCellArea* area) isActivatable;
4576 	/**
4577 	 *
4578 	 * Params:
4579 	 *     area = a `GtkCellArea`
4580 	 *     context = the `GtkCellArea`Context in context with the current row data
4581 	 *     widget = the `GtkWidget` that @area is rendering on
4582 	 *     cellArea = the size and location of @area relative to @widget’s allocation
4583 	 *     flags = the `GtkCellRenderer`State flags for @area for this row of data.
4584 	 *     editOnly = if %TRUE then only cell renderers that are %GTK_CELL_RENDERER_MODE_EDITABLE
4585 	 *         will be activated.
4586 	 * Returns: Whether @area was successfully activated.
4587 	 */
4588 	extern(C) int function(GtkCellArea* area, GtkCellAreaContext* context, GtkWidget* widget, GdkRectangle* cellArea, GtkCellRendererState flags, int editOnly) activate;
4589 	void*[8] padding;
4590 }
4591 
4592 struct GtkCellAreaContext
4593 {
4594 	GObject parentInstance;
4595 }
4596 
4597 struct GtkCellAreaContextClass
4598 {
4599 	GObjectClass parentClass;
4600 	/** */
4601 	extern(C) void function(GtkCellAreaContext* context, int width, int height) allocate;
4602 	/** */
4603 	extern(C) void function(GtkCellAreaContext* context) reset;
4604 	/** */
4605 	extern(C) void function(GtkCellAreaContext* context, int width, int* minimumHeight, int* naturalHeight) getPreferredHeightForWidth;
4606 	/** */
4607 	extern(C) void function(GtkCellAreaContext* context, int height, int* minimumWidth, int* naturalWidth) getPreferredWidthForHeight;
4608 	void*[8] padding;
4609 }
4610 
4611 struct GtkCellAreaContextPrivate;
4612 
4613 struct GtkCellEditable;
4614 
4615 struct GtkCellEditableIface
4616 {
4617 	GTypeInterface gIface;
4618 	/** */
4619 	extern(C) void function(GtkCellEditable* cellEditable) editingDone;
4620 	/** */
4621 	extern(C) void function(GtkCellEditable* cellEditable) removeWidget;
4622 	/** */
4623 	extern(C) void function(GtkCellEditable* cellEditable, GdkEvent* event) startEditing;
4624 }
4625 
4626 struct GtkCellLayout;
4627 
4628 struct GtkCellLayoutIface
4629 {
4630 	GTypeInterface gIface;
4631 	/** */
4632 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, int expand) packStart;
4633 	/** */
4634 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, int expand) packEnd;
4635 	/** */
4636 	extern(C) void function(GtkCellLayout* cellLayout) clear;
4637 	/** */
4638 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, const(char)* attribute, int column) addAttribute;
4639 	/** */
4640 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, GtkCellLayoutDataFunc func, void* funcData, GDestroyNotify destroy) setCellDataFunc;
4641 	/** */
4642 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell) clearAttributes;
4643 	/** */
4644 	extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, int position) reorder;
4645 	/**
4646 	 *
4647 	 * Params:
4648 	 *     cellLayout = a `GtkCellLayout`
4649 	 * Returns: a list of cell renderers. The list, but not the renderers has
4650 	 *     been newly allocated and should be freed with g_list_free()
4651 	 *     when no longer needed.
4652 	 */
4653 	extern(C) GList* function(GtkCellLayout* cellLayout) getCells;
4654 	/**
4655 	 *
4656 	 * Params:
4657 	 *     cellLayout = a `GtkCellLayout`
4658 	 * Returns: the cell area used by @cell_layout
4659 	 */
4660 	extern(C) GtkCellArea* function(GtkCellLayout* cellLayout) getArea;
4661 }
4662 
4663 struct GtkCellRenderer
4664 {
4665 	GObject parentInstance;
4666 	GtkCellRendererPrivate* priv;
4667 }
4668 
4669 struct GtkCellRendererAccel;
4670 
4671 struct GtkCellRendererClass
4672 {
4673 	GObjectClass parentClass;
4674 	/**
4675 	 *
4676 	 * Params:
4677 	 *     cell = a `GtkCellRenderer` instance
4678 	 * Returns: The `GtkSizeRequestMode` preferred by this renderer.
4679 	 */
4680 	extern(C) GtkSizeRequestMode function(GtkCellRenderer* cell) getRequestMode;
4681 	/** */
4682 	extern(C) void function(GtkCellRenderer* cell, GtkWidget* widget, int* minimumSize, int* naturalSize) getPreferredWidth;
4683 	/** */
4684 	extern(C) void function(GtkCellRenderer* cell, GtkWidget* widget, int width, int* minimumHeight, int* naturalHeight) getPreferredHeightForWidth;
4685 	/** */
4686 	extern(C) void function(GtkCellRenderer* cell, GtkWidget* widget, int* minimumSize, int* naturalSize) getPreferredHeight;
4687 	/** */
4688 	extern(C) void function(GtkCellRenderer* cell, GtkWidget* widget, int height, int* minimumWidth, int* naturalWidth) getPreferredWidthForHeight;
4689 	/** */
4690 	extern(C) void function(GtkCellRenderer* cell, GtkWidget* widget, GtkCellRendererState flags, GdkRectangle* cellArea, GdkRectangle* alignedArea) getAlignedArea;
4691 	/** */
4692 	extern(C) void function(GtkCellRenderer* cell, GtkSnapshot* snapshot, GtkWidget* widget, GdkRectangle* backgroundArea, GdkRectangle* cellArea, GtkCellRendererState flags) snapshot;
4693 	/**
4694 	 *
4695 	 * Params:
4696 	 *     cell = a `GtkCellRenderer`
4697 	 *     event = a `GdkEvent`
4698 	 *     widget = widget that received the event
4699 	 *     path = widget-dependent string representation of the event location;
4700 	 *         e.g. for `GtkTreeView`, a string representation of `GtkTreePath`
4701 	 *     backgroundArea = background area as passed to gtk_cell_renderer_render()
4702 	 *     cellArea = cell area as passed to gtk_cell_renderer_render()
4703 	 *     flags = render flags
4704 	 * Returns: %TRUE if the event was consumed/handled
4705 	 */
4706 	extern(C) int function(GtkCellRenderer* cell, GdkEvent* event, GtkWidget* widget, const(char)* path, GdkRectangle* backgroundArea, GdkRectangle* cellArea, GtkCellRendererState flags) activate;
4707 	/**
4708 	 *
4709 	 * Params:
4710 	 *     cell = a `GtkCellRenderer`
4711 	 *     event = a `GdkEvent`
4712 	 *     widget = widget that received the event
4713 	 *     path = widget-dependent string representation of the event location;
4714 	 *         e.g. for `GtkTreeView`, a string representation of `GtkTreePath`
4715 	 *     backgroundArea = background area as passed to gtk_cell_renderer_render()
4716 	 *     cellArea = cell area as passed to gtk_cell_renderer_render()
4717 	 *     flags = render flags
4718 	 * Returns: A new `GtkCellEditable` for editing this
4719 	 *     @cell, or %NULL if editing is not possible
4720 	 */
4721 	extern(C) GtkCellEditable* function(GtkCellRenderer* cell, GdkEvent* event, GtkWidget* widget, const(char)* path, GdkRectangle* backgroundArea, GdkRectangle* cellArea, GtkCellRendererState flags) startEditing;
4722 	/** */
4723 	extern(C) void function(GtkCellRenderer* cell) editingCanceled;
4724 	/** */
4725 	extern(C) void function(GtkCellRenderer* cell, GtkCellEditable* editable, const(char)* path) editingStarted;
4726 	void*[8] padding;
4727 }
4728 
4729 struct GtkCellRendererClassPrivate;
4730 
4731 struct GtkCellRendererCombo;
4732 
4733 struct GtkCellRendererPixbuf;
4734 
4735 struct GtkCellRendererPrivate;
4736 
4737 struct GtkCellRendererProgress;
4738 
4739 struct GtkCellRendererSpin;
4740 
4741 struct GtkCellRendererSpinner;
4742 
4743 struct GtkCellRendererText
4744 {
4745 	GtkCellRenderer parent;
4746 }
4747 
4748 struct GtkCellRendererTextClass
4749 {
4750 	GtkCellRendererClass parentClass;
4751 	/** */
4752 	extern(C) void function(GtkCellRendererText* cellRendererText, const(char)* path, const(char)* newText) edited;
4753 	void*[8] padding;
4754 }
4755 
4756 struct GtkCellRendererToggle;
4757 
4758 struct GtkCellView;
4759 
4760 struct GtkCenterBox;
4761 
4762 struct GtkCenterBoxClass;
4763 
4764 struct GtkCenterLayout;
4765 
4766 struct GtkCenterLayoutClass
4767 {
4768 	GtkLayoutManagerClass parentClass;
4769 }
4770 
4771 struct GtkCheckButton
4772 {
4773 	GtkWidget parentInstance;
4774 }
4775 
4776 struct GtkCheckButtonClass
4777 {
4778 	GtkWidgetClass parentClass;
4779 	/** */
4780 	extern(C) void function(GtkCheckButton* checkButton) toggled;
4781 	/** */
4782 	extern(C) void function(GtkCheckButton* checkButton) activate;
4783 	void*[7] padding;
4784 }
4785 
4786 struct GtkClosureExpression;
4787 
4788 struct GtkColorButton;
4789 
4790 struct GtkColorChooser;
4791 
4792 struct GtkColorChooserDialog;
4793 
4794 struct GtkColorChooserInterface
4795 {
4796 	GTypeInterface baseInterface;
4797 	/** */
4798 	extern(C) void function(GtkColorChooser* chooser, GdkRGBA* color) getRgba;
4799 	/** */
4800 	extern(C) void function(GtkColorChooser* chooser, GdkRGBA* color) setRgba;
4801 	/** */
4802 	extern(C) void function(GtkColorChooser* chooser, GtkOrientation orientation, int colorsPerLine, int nColors, GdkRGBA* colors) addPalette;
4803 	/** */
4804 	extern(C) void function(GtkColorChooser* chooser, GdkRGBA* color) colorActivated;
4805 	void*[12] padding;
4806 }
4807 
4808 struct GtkColorChooserWidget;
4809 
4810 struct GtkColumnView;
4811 
4812 struct GtkColumnViewClass;
4813 
4814 struct GtkColumnViewColumn;
4815 
4816 struct GtkColumnViewColumnClass;
4817 
4818 struct GtkComboBox
4819 {
4820 	GtkWidget parentInstance;
4821 }
4822 
4823 struct GtkComboBoxClass
4824 {
4825 	/**
4826 	 * The parent class.
4827 	 */
4828 	GtkWidgetClass parentClass;
4829 	/** */
4830 	extern(C) void function(GtkComboBox* comboBox) changed;
4831 	/** */
4832 	extern(C) char* function(GtkComboBox* comboBox, const(char)* path) formatEntryText;
4833 	/** */
4834 	extern(C) void function(GtkComboBox* comboBox) activate;
4835 	void*[7] padding;
4836 }
4837 
4838 struct GtkComboBoxText;
4839 
4840 struct GtkConstantExpression;
4841 
4842 struct GtkConstraint;
4843 
4844 struct GtkConstraintClass
4845 {
4846 	GObjectClass parentClass;
4847 }
4848 
4849 struct GtkConstraintGuide;
4850 
4851 struct GtkConstraintGuideClass
4852 {
4853 	GObjectClass parentClass;
4854 }
4855 
4856 struct GtkConstraintLayout;
4857 
4858 struct GtkConstraintLayoutChild;
4859 
4860 struct GtkConstraintLayoutChildClass
4861 {
4862 	GtkLayoutChildClass parentClass;
4863 }
4864 
4865 struct GtkConstraintLayoutClass
4866 {
4867 	GtkLayoutManagerClass parentClass;
4868 }
4869 
4870 struct GtkConstraintTarget;
4871 
4872 struct GtkConstraintTargetInterface;
4873 
4874 /**
4875  * Represents a location in a file or other source of data parsed
4876  * by the CSS engine.
4877  *
4878  * The @bytes and @line_bytes offsets are meant to be used to
4879  * programmatically match data. The @lines and @line_chars offsets
4880  * can be used for printing the location in a file.
4881  *
4882  * Note that the @lines parameter starts from 0 and is increased
4883  * whenever a CSS line break is encountered. (CSS defines the C character
4884  * sequences "\r\n", "\r", "\n" and "\f" as newlines.)
4885  * If your document uses different rules for line breaking, you might want
4886  * run into problems here.
4887  */
4888 struct GtkCssLocation
4889 {
4890 	/**
4891 	 * number of bytes parsed since the beginning
4892 	 */
4893 	size_t bytes;
4894 	/**
4895 	 * number of characters parsed since the beginning
4896 	 */
4897 	size_t chars;
4898 	/**
4899 	 * number of full lines that have been parsed. If you want to
4900 	 * display this as a line number, you need to add 1 to this.
4901 	 */
4902 	size_t lines;
4903 	/**
4904 	 * Number of bytes parsed since the last line break
4905 	 */
4906 	size_t lineBytes;
4907 	/**
4908 	 * Number of characters parsed since the last line break
4909 	 */
4910 	size_t lineChars;
4911 }
4912 
4913 struct GtkCssProvider
4914 {
4915 	GObject parentInstance;
4916 }
4917 
4918 struct GtkCssProviderClass;
4919 
4920 struct GtkCssProviderPrivate;
4921 
4922 struct GtkCssSection;
4923 
4924 struct GtkCssStyleChange;
4925 
4926 struct GtkCustomFilter;
4927 
4928 struct GtkCustomFilterClass
4929 {
4930 	GtkFilterClass parentClass;
4931 }
4932 
4933 struct GtkCustomLayout;
4934 
4935 struct GtkCustomLayoutClass
4936 {
4937 	GtkLayoutManagerClass parentClass;
4938 }
4939 
4940 struct GtkCustomSorter;
4941 
4942 struct GtkCustomSorterClass
4943 {
4944 	GtkSorterClass parentClass;
4945 }
4946 
4947 struct GtkDialog
4948 {
4949 	GtkWindow parentInstance;
4950 }
4951 
4952 struct GtkDialogClass
4953 {
4954 	/**
4955 	 * The parent class.
4956 	 */
4957 	GtkWindowClass parentClass;
4958 	/** */
4959 	extern(C) void function(GtkDialog* dialog, int responseId) response;
4960 	/** */
4961 	extern(C) void function(GtkDialog* dialog) close;
4962 	void*[8] padding;
4963 }
4964 
4965 struct GtkDirectoryList;
4966 
4967 struct GtkDirectoryListClass
4968 {
4969 	GObjectClass parentClass;
4970 }
4971 
4972 struct GtkDragIcon;
4973 
4974 struct GtkDragIconClass
4975 {
4976 	GtkWidgetClass parentClass;
4977 }
4978 
4979 struct GtkDragSource;
4980 
4981 struct GtkDragSourceClass;
4982 
4983 struct GtkDrawingArea
4984 {
4985 	GtkWidget widget;
4986 }
4987 
4988 struct GtkDrawingAreaClass
4989 {
4990 	GtkWidgetClass parentClass;
4991 	/** */
4992 	extern(C) void function(GtkDrawingArea* area, int width, int height) resize;
4993 	void*[8] padding;
4994 }
4995 
4996 struct GtkDropControllerMotion;
4997 
4998 struct GtkDropControllerMotionClass;
4999 
5000 struct GtkDropDown;
5001 
5002 struct GtkDropDownClass
5003 {
5004 	GtkWidgetClass parentClass;
5005 }
5006 
5007 struct GtkDropTarget;
5008 
5009 struct GtkDropTargetAsync;
5010 
5011 struct GtkDropTargetAsyncClass;
5012 
5013 struct GtkDropTargetClass;
5014 
5015 struct GtkEditable;
5016 
5017 struct GtkEditableInterface
5018 {
5019 	GTypeInterface baseIface;
5020 	/** */
5021 	extern(C) void function(GtkEditable* editable, const(char)* text, int length, int* position) insertText;
5022 	/** */
5023 	extern(C) void function(GtkEditable* editable, int startPos, int endPos) deleteText;
5024 	/** */
5025 	extern(C) void function(GtkEditable* editable) changed;
5026 	/**
5027 	 *
5028 	 * Params:
5029 	 *     editable = a `GtkEditable`
5030 	 * Returns: a pointer to the contents of the editable
5031 	 */
5032 	extern(C) const(char)* function(GtkEditable* editable) getText;
5033 	/** */
5034 	extern(C) void function(GtkEditable* editable, const(char)* text, int length, int* position) doInsertText;
5035 	/** */
5036 	extern(C) void function(GtkEditable* editable, int startPos, int endPos) doDeleteText;
5037 	/**
5038 	 *
5039 	 * Params:
5040 	 *     editable = a `GtkEditable`
5041 	 *     startPos = location to store the starting position
5042 	 *     endPos = location to store the end position
5043 	 * Returns: %TRUE if there is a non-empty selection, %FALSE otherwise
5044 	 */
5045 	extern(C) int function(GtkEditable* editable, int* startPos, int* endPos) getSelectionBounds;
5046 	/** */
5047 	extern(C) void function(GtkEditable* editable, int startPos, int endPos) setSelectionBounds;
5048 	/**
5049 	 *
5050 	 * Params:
5051 	 *     editable = a `GtkEditable`
5052 	 * Returns: the delegate `GtkEditable`
5053 	 */
5054 	extern(C) GtkEditable* function(GtkEditable* editable) getDelegate;
5055 }
5056 
5057 struct GtkEditableLabel;
5058 
5059 struct GtkEditableLabelClass
5060 {
5061 	GtkWidgetClass parentClass;
5062 }
5063 
5064 struct GtkEmojiChooser;
5065 
5066 struct GtkEmojiChooserClass;
5067 
5068 struct GtkEntry
5069 {
5070 	GtkWidget parentInstance;
5071 }
5072 
5073 struct GtkEntryBuffer
5074 {
5075 	GObject parentInstance;
5076 }
5077 
5078 struct GtkEntryBufferClass
5079 {
5080 	GObjectClass parentClass;
5081 	/** */
5082 	extern(C) void function(GtkEntryBuffer* buffer, uint position, const(char)* chars, uint nChars) insertedText;
5083 	/** */
5084 	extern(C) void function(GtkEntryBuffer* buffer, uint position, uint nChars) deletedText;
5085 	/** */
5086 	extern(C) const(char)* function(GtkEntryBuffer* buffer, size_t* nBytes) getText;
5087 	/**
5088 	 *
5089 	 * Params:
5090 	 *     buffer = a `GtkEntryBuffer`
5091 	 * Returns: The number of characters in the buffer.
5092 	 */
5093 	extern(C) uint function(GtkEntryBuffer* buffer) getLength;
5094 	/**
5095 	 *
5096 	 * Params:
5097 	 *     buffer = a `GtkEntryBuffer`
5098 	 *     position = the position at which to insert text.
5099 	 *     chars = the text to insert into the buffer.
5100 	 *     nChars = the length of the text in characters, or -1
5101 	 * Returns: The number of characters actually inserted.
5102 	 */
5103 	extern(C) uint function(GtkEntryBuffer* buffer, uint position, const(char)* chars, uint nChars) insertText;
5104 	/**
5105 	 *
5106 	 * Params:
5107 	 *     buffer = a `GtkEntryBuffer`
5108 	 *     position = position at which to delete text
5109 	 *     nChars = number of characters to delete
5110 	 * Returns: The number of characters deleted.
5111 	 */
5112 	extern(C) uint function(GtkEntryBuffer* buffer, uint position, uint nChars) deleteText;
5113 	/** */
5114 	extern(C) void function() GtkReserved1;
5115 	/** */
5116 	extern(C) void function() GtkReserved2;
5117 	/** */
5118 	extern(C) void function() GtkReserved3;
5119 	/** */
5120 	extern(C) void function() GtkReserved4;
5121 	/** */
5122 	extern(C) void function() GtkReserved5;
5123 	/** */
5124 	extern(C) void function() GtkReserved6;
5125 	/** */
5126 	extern(C) void function() GtkReserved7;
5127 	/** */
5128 	extern(C) void function() GtkReserved8;
5129 }
5130 
5131 /**
5132  * Class structure for `GtkEntry`. All virtual functions have a default
5133  * implementation. Derived classes may set the virtual function pointers for the
5134  * signal handlers to %NULL, but must keep @get_text_area_size and
5135  * @get_frame_size non-%NULL; either use the default implementation, or provide
5136  * a custom one.
5137  */
5138 struct GtkEntryClass
5139 {
5140 	/**
5141 	 * The parent class.
5142 	 */
5143 	GtkWidgetClass parentClass;
5144 	/** */
5145 	extern(C) void function(GtkEntry* entry) activate;
5146 	void*[8] padding;
5147 }
5148 
5149 struct GtkEntryCompletion;
5150 
5151 struct GtkEventController;
5152 
5153 struct GtkEventControllerClass;
5154 
5155 struct GtkEventControllerFocus;
5156 
5157 struct GtkEventControllerFocusClass;
5158 
5159 struct GtkEventControllerKey;
5160 
5161 struct GtkEventControllerKeyClass;
5162 
5163 struct GtkEventControllerLegacy;
5164 
5165 struct GtkEventControllerLegacyClass;
5166 
5167 struct GtkEventControllerMotion;
5168 
5169 struct GtkEventControllerMotionClass;
5170 
5171 struct GtkEventControllerScroll;
5172 
5173 struct GtkEventControllerScrollClass;
5174 
5175 struct GtkEveryFilter;
5176 
5177 struct GtkEveryFilterClass;
5178 
5179 struct GtkExpander;
5180 
5181 struct GtkExpression;
5182 
5183 struct GtkExpressionWatch;
5184 
5185 struct GtkFileChooser;
5186 
5187 struct GtkFileChooserDialog;
5188 
5189 struct GtkFileChooserNative;
5190 
5191 struct GtkFileChooserNativeClass
5192 {
5193 	GtkNativeDialogClass parentClass;
5194 }
5195 
5196 struct GtkFileChooserWidget;
5197 
5198 struct GtkFileFilter;
5199 
5200 struct GtkFilter
5201 {
5202 	GObject parentInstance;
5203 }
5204 
5205 struct GtkFilterClass
5206 {
5207 	GObjectClass parentClass;
5208 	/**
5209 	 *
5210 	 * Params:
5211 	 *     self = a `GtkFilter`
5212 	 *     item = The item to check
5213 	 * Returns: %TRUE if the filter matches the item and a filter model should
5214 	 *     keep it, %FALSE if not.
5215 	 */
5216 	extern(C) int function(GtkFilter* self, void* item) match;
5217 	/**
5218 	 *
5219 	 * Params:
5220 	 *     self = a `GtkFilter`
5221 	 * Returns: the strictness of @self
5222 	 */
5223 	extern(C) GtkFilterMatch function(GtkFilter* self) getStrictness;
5224 	/** */
5225 	extern(C) void function() GtkReserved1;
5226 	/** */
5227 	extern(C) void function() GtkReserved2;
5228 	/** */
5229 	extern(C) void function() GtkReserved3;
5230 	/** */
5231 	extern(C) void function() GtkReserved4;
5232 	/** */
5233 	extern(C) void function() GtkReserved5;
5234 	/** */
5235 	extern(C) void function() GtkReserved6;
5236 	/** */
5237 	extern(C) void function() GtkReserved7;
5238 	/** */
5239 	extern(C) void function() GtkReserved8;
5240 }
5241 
5242 struct GtkFilterListModel;
5243 
5244 struct GtkFilterListModelClass
5245 {
5246 	GObjectClass parentClass;
5247 }
5248 
5249 struct GtkFixed
5250 {
5251 	GtkWidget parentInstance;
5252 }
5253 
5254 struct GtkFixedClass
5255 {
5256 	GtkWidgetClass parentClass;
5257 	void*[8] padding;
5258 }
5259 
5260 struct GtkFixedLayout;
5261 
5262 struct GtkFixedLayoutChild;
5263 
5264 struct GtkFixedLayoutChildClass
5265 {
5266 	GtkLayoutChildClass parentClass;
5267 }
5268 
5269 struct GtkFixedLayoutClass
5270 {
5271 	GtkLayoutManagerClass parentClass;
5272 }
5273 
5274 struct GtkFlattenListModel;
5275 
5276 struct GtkFlattenListModelClass
5277 {
5278 	GObjectClass parentClass;
5279 }
5280 
5281 struct GtkFlowBox;
5282 
5283 struct GtkFlowBoxChild
5284 {
5285 	GtkWidget parentInstance;
5286 }
5287 
5288 struct GtkFlowBoxChildClass
5289 {
5290 	GtkWidgetClass parentClass;
5291 	/** */
5292 	extern(C) void function(GtkFlowBoxChild* child) activate;
5293 	void*[8] padding;
5294 }
5295 
5296 struct GtkFontButton;
5297 
5298 struct GtkFontChooser;
5299 
5300 struct GtkFontChooserDialog;
5301 
5302 struct GtkFontChooserIface
5303 {
5304 	GTypeInterface baseIface;
5305 	/**
5306 	 *
5307 	 * Params:
5308 	 *     fontchooser = a `GtkFontChooser`
5309 	 * Returns: A `PangoFontFamily` representing the
5310 	 *     selected font family
5311 	 */
5312 	extern(C) PangoFontFamily* function(GtkFontChooser* fontchooser) getFontFamily;
5313 	/**
5314 	 *
5315 	 * Params:
5316 	 *     fontchooser = a `GtkFontChooser`
5317 	 * Returns: A `PangoFontFace` representing the
5318 	 *     selected font group details
5319 	 */
5320 	extern(C) PangoFontFace* function(GtkFontChooser* fontchooser) getFontFace;
5321 	/**
5322 	 *
5323 	 * Params:
5324 	 *     fontchooser = a `GtkFontChooser`
5325 	 * Returns: A n integer representing the selected font size,
5326 	 *     or -1 if no font size is selected.
5327 	 */
5328 	extern(C) int function(GtkFontChooser* fontchooser) getFontSize;
5329 	/** */
5330 	extern(C) void function(GtkFontChooser* fontchooser, GtkFontFilterFunc filter, void* userData, GDestroyNotify destroy) setFilterFunc;
5331 	/** */
5332 	extern(C) void function(GtkFontChooser* chooser, const(char)* fontname) fontActivated;
5333 	/** */
5334 	extern(C) void function(GtkFontChooser* fontchooser, PangoFontMap* fontmap) setFontMap;
5335 	/**
5336 	 *
5337 	 * Params:
5338 	 *     fontchooser = a `GtkFontChooser`
5339 	 * Returns: a `PangoFontMap`
5340 	 */
5341 	extern(C) PangoFontMap* function(GtkFontChooser* fontchooser) getFontMap;
5342 	void*[10] padding;
5343 }
5344 
5345 struct GtkFontChooserWidget;
5346 
5347 struct GtkFrame
5348 {
5349 	GtkWidget parentInstance;
5350 }
5351 
5352 struct GtkFrameClass
5353 {
5354 	/**
5355 	 * The parent class.
5356 	 */
5357 	GtkWidgetClass parentClass;
5358 	/** */
5359 	extern(C) void function(GtkFrame* frame, GtkAllocation* allocation) computeChildAllocation;
5360 	void*[8] padding;
5361 }
5362 
5363 struct GtkGLArea
5364 {
5365 	GtkWidget parentInstance;
5366 }
5367 
5368 /**
5369  * The `GtkGLAreaClass` structure contains only private data.
5370  */
5371 struct GtkGLAreaClass
5372 {
5373 	GtkWidgetClass parentClass;
5374 	/** */
5375 	extern(C) int function(GtkGLArea* area, GdkGLContext* context) render;
5376 	/** */
5377 	extern(C) void function(GtkGLArea* area, int width, int height) resize;
5378 	/** */
5379 	extern(C) GdkGLContext* function(GtkGLArea* area) createContext;
5380 	void*[8] Padding;
5381 }
5382 
5383 struct GtkGesture;
5384 
5385 struct GtkGestureClass;
5386 
5387 struct GtkGestureClick;
5388 
5389 struct GtkGestureClickClass;
5390 
5391 struct GtkGestureDrag;
5392 
5393 struct GtkGestureDragClass;
5394 
5395 struct GtkGestureLongPress;
5396 
5397 struct GtkGestureLongPressClass;
5398 
5399 struct GtkGesturePan;
5400 
5401 struct GtkGesturePanClass;
5402 
5403 struct GtkGestureRotate;
5404 
5405 struct GtkGestureRotateClass;
5406 
5407 struct GtkGestureSingle;
5408 
5409 struct GtkGestureSingleClass;
5410 
5411 struct GtkGestureStylus;
5412 
5413 struct GtkGestureStylusClass;
5414 
5415 struct GtkGestureSwipe;
5416 
5417 struct GtkGestureSwipeClass;
5418 
5419 struct GtkGestureZoom;
5420 
5421 struct GtkGestureZoomClass;
5422 
5423 struct GtkGrid
5424 {
5425 	GtkWidget parentInstance;
5426 }
5427 
5428 struct GtkGridClass
5429 {
5430 	/**
5431 	 * The parent class.
5432 	 */
5433 	GtkWidgetClass parentClass;
5434 	void*[8] padding;
5435 }
5436 
5437 struct GtkGridLayout;
5438 
5439 struct GtkGridLayoutChild;
5440 
5441 struct GtkGridLayoutChildClass
5442 {
5443 	GtkLayoutChildClass parentClass;
5444 }
5445 
5446 struct GtkGridLayoutClass
5447 {
5448 	GtkLayoutManagerClass parentClass;
5449 }
5450 
5451 struct GtkGridView;
5452 
5453 struct GtkGridViewClass;
5454 
5455 struct GtkHeaderBar;
5456 
5457 struct GtkIMContext
5458 {
5459 	GObject parentInstance;
5460 }
5461 
5462 struct GtkIMContextClass
5463 {
5464 	GObjectClass parentClass;
5465 	/** */
5466 	extern(C) void function(GtkIMContext* context) preeditStart;
5467 	/** */
5468 	extern(C) void function(GtkIMContext* context) preeditEnd;
5469 	/** */
5470 	extern(C) void function(GtkIMContext* context) preeditChanged;
5471 	/** */
5472 	extern(C) void function(GtkIMContext* context, const(char)* str) commit;
5473 	/** */
5474 	extern(C) int function(GtkIMContext* context) retrieveSurrounding;
5475 	/**
5476 	 *
5477 	 * Params:
5478 	 *     context = a `GtkIMContext`
5479 	 *     offset = offset from cursor position in chars;
5480 	 *         a negative value means start before the cursor.
5481 	 *     nChars = number of characters to delete.
5482 	 * Returns: %TRUE if the signal was handled.
5483 	 */
5484 	extern(C) int function(GtkIMContext* context, int offset, int nChars) deleteSurrounding;
5485 	/** */
5486 	extern(C) void function(GtkIMContext* context, GtkWidget* widget) setClientWidget;
5487 	/** */
5488 	extern(C) void function(GtkIMContext* context, char** str, PangoAttrList** attrs, int* cursorPos) getPreeditString;
5489 	/**
5490 	 *
5491 	 * Params:
5492 	 *     context = a `GtkIMContext`
5493 	 *     event = the key event
5494 	 * Returns: %TRUE if the input method handled the key event.
5495 	 */
5496 	extern(C) int function(GtkIMContext* context, GdkEvent* event) filterKeypress;
5497 	/** */
5498 	extern(C) void function(GtkIMContext* context) focusIn;
5499 	/** */
5500 	extern(C) void function(GtkIMContext* context) focusOut;
5501 	/** */
5502 	extern(C) void function(GtkIMContext* context) reset;
5503 	/** */
5504 	extern(C) void function(GtkIMContext* context, GdkRectangle* area) setCursorLocation;
5505 	/** */
5506 	extern(C) void function(GtkIMContext* context, int usePreedit) setUsePreedit;
5507 	/** */
5508 	extern(C) void function(GtkIMContext* context, const(char)* text, int len, int cursorIndex) setSurrounding;
5509 	/**
5510 	 *
5511 	 * Params:
5512 	 *     context = a `GtkIMContext`
5513 	 *     text = location to store a UTF-8 encoded
5514 	 *         string of text holding context around the insertion point.
5515 	 *         If the function returns %TRUE, then you must free the result
5516 	 *         stored in this location with g_free().
5517 	 *     cursorIndex = location to store byte index of the insertion
5518 	 *         cursor within @text.
5519 	 * Returns: `TRUE` if surrounding text was provided; in this case
5520 	 *     you must free the result stored in `text`.
5521 	 */
5522 	extern(C) int function(GtkIMContext* context, char** text, int* cursorIndex) getSurrounding;
5523 	/** */
5524 	extern(C) void function(GtkIMContext* context, const(char)* text, int len, int cursorIndex, int anchorIndex) setSurroundingWithSelection;
5525 	/**
5526 	 *
5527 	 * Params:
5528 	 *     context = a `GtkIMContext`
5529 	 *     text = location to store a UTF-8 encoded
5530 	 *         string of text holding context around the insertion point.
5531 	 *         If the function returns %TRUE, then you must free the result
5532 	 *         stored in this location with g_free().
5533 	 *     cursorIndex = location to store byte index of the insertion
5534 	 *         cursor within @text.
5535 	 *     anchorIndex = location to store byte index of the selection
5536 	 *         bound within @text
5537 	 * Returns: `TRUE` if surrounding text was provided; in this case
5538 	 *     you must free the result stored in `text`.
5539 	 */
5540 	extern(C) int function(GtkIMContext* context, char** text, int* cursorIndex, int* anchorIndex) getSurroundingWithSelection;
5541 	/** */
5542 	extern(C) void function() GtkReserved1;
5543 	/** */
5544 	extern(C) void function() GtkReserved2;
5545 	/** */
5546 	extern(C) void function() GtkReserved3;
5547 	/** */
5548 	extern(C) void function() GtkReserved4;
5549 	/** */
5550 	extern(C) void function() GtkReserved5;
5551 }
5552 
5553 struct GtkIMContextSimple
5554 {
5555 	GtkIMContext object;
5556 	GtkIMContextSimplePrivate* priv;
5557 }
5558 
5559 struct GtkIMContextSimpleClass
5560 {
5561 	GtkIMContextClass parentClass;
5562 }
5563 
5564 struct GtkIMContextSimplePrivate;
5565 
5566 struct GtkIMMulticontext
5567 {
5568 	GtkIMContext object;
5569 	GtkIMMulticontextPrivate* priv;
5570 }
5571 
5572 struct GtkIMMulticontextClass
5573 {
5574 	GtkIMContextClass parentClass;
5575 	/** */
5576 	extern(C) void function() GtkReserved1;
5577 	/** */
5578 	extern(C) void function() GtkReserved2;
5579 	/** */
5580 	extern(C) void function() GtkReserved3;
5581 	/** */
5582 	extern(C) void function() GtkReserved4;
5583 }
5584 
5585 struct GtkIMMulticontextPrivate;
5586 
5587 struct GtkIconPaintable;
5588 
5589 struct GtkIconTheme;
5590 
5591 struct GtkIconView;
5592 
5593 struct GtkImage;
5594 
5595 struct GtkInfoBar;
5596 
5597 struct GtkKeyvalTrigger;
5598 
5599 struct GtkKeyvalTriggerClass;
5600 
5601 struct GtkLabel;
5602 
5603 struct GtkLayoutChild
5604 {
5605 	GObject parentInstance;
5606 }
5607 
5608 struct GtkLayoutChildClass
5609 {
5610 	GObjectClass parentClass;
5611 }
5612 
5613 struct GtkLayoutManager
5614 {
5615 	GObject parentInstance;
5616 }
5617 
5618 /**
5619  * The `GtkLayoutManagerClass` structure contains only private data, and
5620  * should only be accessed through the provided API, or when subclassing
5621  * `GtkLayoutManager`.
5622  */
5623 struct GtkLayoutManagerClass
5624 {
5625 	GObjectClass parentClass;
5626 	/** */
5627 	extern(C) GtkSizeRequestMode function(GtkLayoutManager* manager, GtkWidget* widget) getRequestMode;
5628 	/** */
5629 	extern(C) void function(GtkLayoutManager* manager, GtkWidget* widget, GtkOrientation orientation, int forSize, int* minimum, int* natural, int* minimumBaseline, int* naturalBaseline) measure;
5630 	/** */
5631 	extern(C) void function(GtkLayoutManager* manager, GtkWidget* widget, int width, int height, int baseline) allocate;
5632 	/**
5633 	 * the type of `GtkLayoutChild` used by this layout manager
5634 	 */
5635 	GType layoutChildType;
5636 	/**
5637 	 *
5638 	 * Params:
5639 	 *     manager = the `GtkLayoutManager`
5640 	 *     widget = the widget using the @manager
5641 	 *     forChild = the child of @widget
5642 	 * Returns: a `GtkLayoutChild`
5643 	 */
5644 	extern(C) GtkLayoutChild* function(GtkLayoutManager* manager, GtkWidget* widget, GtkWidget* forChild) createLayoutChild;
5645 	/** */
5646 	extern(C) void function(GtkLayoutManager* manager) root;
5647 	/** */
5648 	extern(C) void function(GtkLayoutManager* manager) unroot;
5649 	void*[16] Padding;
5650 }
5651 
5652 struct GtkLevelBar;
5653 
5654 struct GtkLinkButton;
5655 
5656 struct GtkListBase;
5657 
5658 struct GtkListBaseClass;
5659 
5660 struct GtkListBox;
5661 
5662 struct GtkListBoxRow
5663 {
5664 	GtkWidget parentInstance;
5665 }
5666 
5667 struct GtkListBoxRowClass
5668 {
5669 	/**
5670 	 * The parent class.
5671 	 */
5672 	GtkWidgetClass parentClass;
5673 	/** */
5674 	extern(C) void function(GtkListBoxRow* row) activate;
5675 	void*[8] padding;
5676 }
5677 
5678 struct GtkListItem;
5679 
5680 struct GtkListItemClass;
5681 
5682 struct GtkListItemFactory;
5683 
5684 struct GtkListItemFactoryClass;
5685 
5686 struct GtkListStore
5687 {
5688 	GObject parent;
5689 	GtkListStorePrivate* priv;
5690 }
5691 
5692 struct GtkListStoreClass
5693 {
5694 	GObjectClass parentClass;
5695 	void*[8] padding;
5696 }
5697 
5698 struct GtkListStorePrivate;
5699 
5700 struct GtkListView;
5701 
5702 struct GtkListViewClass;
5703 
5704 struct GtkLockButton;
5705 
5706 struct GtkMapListModel;
5707 
5708 struct GtkMapListModelClass
5709 {
5710 	GObjectClass parentClass;
5711 }
5712 
5713 struct GtkMediaControls;
5714 
5715 struct GtkMediaControlsClass
5716 {
5717 	GtkWidgetClass parentClass;
5718 }
5719 
5720 struct GtkMediaFile
5721 {
5722 	GtkMediaStream parentInstance;
5723 }
5724 
5725 struct GtkMediaFileClass
5726 {
5727 	GtkMediaStreamClass parentClass;
5728 	/** */
5729 	extern(C) void function(GtkMediaFile* self) open;
5730 	/** */
5731 	extern(C) void function(GtkMediaFile* self) close;
5732 	/** */
5733 	extern(C) void function() GtkReserved1;
5734 	/** */
5735 	extern(C) void function() GtkReserved2;
5736 	/** */
5737 	extern(C) void function() GtkReserved3;
5738 	/** */
5739 	extern(C) void function() GtkReserved4;
5740 }
5741 
5742 struct GtkMediaStream
5743 {
5744 	GObject parentInstance;
5745 }
5746 
5747 struct GtkMediaStreamClass
5748 {
5749 	GObjectClass parentClass;
5750 	/** */
5751 	extern(C) int function(GtkMediaStream* self) play;
5752 	/** */
5753 	extern(C) void function(GtkMediaStream* self) pause;
5754 	/** */
5755 	extern(C) void function(GtkMediaStream* self, long timestamp) seek;
5756 	/** */
5757 	extern(C) void function(GtkMediaStream* self, int muted, double volume) updateAudio;
5758 	/** */
5759 	extern(C) void function(GtkMediaStream* self, GdkSurface* surface) realize;
5760 	/** */
5761 	extern(C) void function(GtkMediaStream* self, GdkSurface* surface) unrealize;
5762 	/** */
5763 	extern(C) void function() GtkReserved1;
5764 	/** */
5765 	extern(C) void function() GtkReserved2;
5766 	/** */
5767 	extern(C) void function() GtkReserved3;
5768 	/** */
5769 	extern(C) void function() GtkReserved4;
5770 	/** */
5771 	extern(C) void function() GtkReserved5;
5772 	/** */
5773 	extern(C) void function() GtkReserved6;
5774 	/** */
5775 	extern(C) void function() GtkReserved7;
5776 	/** */
5777 	extern(C) void function() GtkReserved8;
5778 }
5779 
5780 struct GtkMenuButton;
5781 
5782 struct GtkMessageDialog
5783 {
5784 	GtkDialog parentInstance;
5785 }
5786 
5787 struct GtkMessageDialogClass;
5788 
5789 struct GtkMnemonicAction;
5790 
5791 struct GtkMnemonicActionClass;
5792 
5793 struct GtkMnemonicTrigger;
5794 
5795 struct GtkMnemonicTriggerClass;
5796 
5797 struct GtkMountOperation
5798 {
5799 	GMountOperation parentInstance;
5800 	GtkMountOperationPrivate* priv;
5801 }
5802 
5803 struct GtkMountOperationClass
5804 {
5805 	/**
5806 	 * The parent class.
5807 	 */
5808 	GMountOperationClass parentClass;
5809 	/** */
5810 	extern(C) void function() GtkReserved1;
5811 	/** */
5812 	extern(C) void function() GtkReserved2;
5813 	/** */
5814 	extern(C) void function() GtkReserved3;
5815 	/** */
5816 	extern(C) void function() GtkReserved4;
5817 }
5818 
5819 struct GtkMountOperationPrivate;
5820 
5821 struct GtkMultiFilter;
5822 
5823 struct GtkMultiFilterClass;
5824 
5825 struct GtkMultiSelection;
5826 
5827 struct GtkMultiSelectionClass
5828 {
5829 	GObjectClass parentClass;
5830 }
5831 
5832 struct GtkMultiSorter;
5833 
5834 struct GtkMultiSorterClass
5835 {
5836 	GtkSorterClass parentClass;
5837 }
5838 
5839 struct GtkNamedAction;
5840 
5841 struct GtkNamedActionClass;
5842 
5843 struct GtkNative;
5844 
5845 struct GtkNativeDialog
5846 {
5847 	GObject parentInstance;
5848 }
5849 
5850 /**
5851  * Class structure for `GtkNativeDialog`.
5852  */
5853 struct GtkNativeDialogClass
5854 {
5855 	GObjectClass parentClass;
5856 	/** */
5857 	extern(C) void function(GtkNativeDialog* self, int responseId) response;
5858 	/** */
5859 	extern(C) void function(GtkNativeDialog* self) show;
5860 	/** */
5861 	extern(C) void function(GtkNativeDialog* self) hide;
5862 	/** */
5863 	extern(C) void function() GtkReserved1;
5864 	/** */
5865 	extern(C) void function() GtkReserved2;
5866 	/** */
5867 	extern(C) void function() GtkReserved3;
5868 	/** */
5869 	extern(C) void function() GtkReserved4;
5870 }
5871 
5872 struct GtkNativeInterface;
5873 
5874 struct GtkNeverTrigger;
5875 
5876 struct GtkNeverTriggerClass;
5877 
5878 struct GtkNoSelection;
5879 
5880 struct GtkNoSelectionClass
5881 {
5882 	GObjectClass parentClass;
5883 }
5884 
5885 struct GtkNotebook;
5886 
5887 struct GtkNotebookPage;
5888 
5889 struct GtkNothingAction;
5890 
5891 struct GtkNothingActionClass;
5892 
5893 struct GtkNumericSorter;
5894 
5895 struct GtkNumericSorterClass
5896 {
5897 	GtkSorterClass parentClass;
5898 }
5899 
5900 struct GtkObjectExpression;
5901 
5902 struct GtkOrientable;
5903 
5904 struct GtkOrientableIface
5905 {
5906 	GTypeInterface baseIface;
5907 }
5908 
5909 struct GtkOverlay;
5910 
5911 struct GtkOverlayLayout;
5912 
5913 struct GtkOverlayLayoutChild;
5914 
5915 struct GtkOverlayLayoutChildClass
5916 {
5917 	GtkLayoutChildClass parentClass;
5918 }
5919 
5920 struct GtkOverlayLayoutClass
5921 {
5922 	GtkLayoutManagerClass parentClass;
5923 }
5924 
5925 /**
5926  * Struct defining a pad action entry.
5927  */
5928 struct GtkPadActionEntry
5929 {
5930 	/**
5931 	 * the type of pad feature that will trigger this action entry.
5932 	 */
5933 	GtkPadActionType type;
5934 	/**
5935 	 * the 0-indexed button/ring/strip number that will trigger this action
5936 	 * entry.
5937 	 */
5938 	int index;
5939 	/**
5940 	 * the mode that will trigger this action entry, or -1 for all modes.
5941 	 */
5942 	int mode;
5943 	/**
5944 	 * Human readable description of this action entry, this string should
5945 	 * be deemed user-visible.
5946 	 */
5947 	const(char)* label;
5948 	/**
5949 	 * action name that will be activated in the `GActionGroup`.
5950 	 */
5951 	const(char)* actionName;
5952 }
5953 
5954 struct GtkPadController;
5955 
5956 struct GtkPadControllerClass;
5957 
5958 /**
5959  * A range of pages to print.
5960  *
5961  * See also [method@Gtk.PrintSettings.set_page_ranges].
5962  */
5963 struct GtkPageRange
5964 {
5965 	/**
5966 	 * start of page range.
5967 	 */
5968 	int start;
5969 	/**
5970 	 * end of page range.
5971 	 */
5972 	int end;
5973 }
5974 
5975 struct GtkPageSetup;
5976 
5977 struct GtkPageSetupUnixDialog;
5978 
5979 struct GtkPaned;
5980 
5981 struct GtkPaperSize;
5982 
5983 struct GtkParamSpecExpression
5984 {
5985 	GParamSpec parentInstance;
5986 }
5987 
5988 struct GtkPasswordEntry;
5989 
5990 struct GtkPasswordEntryBuffer;
5991 
5992 struct GtkPasswordEntryBufferClass
5993 {
5994 	GtkEntryBufferClass parentClass;
5995 }
5996 
5997 struct GtkPasswordEntryClass;
5998 
5999 struct GtkPicture;
6000 
6001 struct GtkPictureClass
6002 {
6003 	GtkWidgetClass parentClass;
6004 }
6005 
6006 struct GtkPopover
6007 {
6008 	GtkWidget parent;
6009 }
6010 
6011 struct GtkPopoverClass
6012 {
6013 	GtkWidgetClass parentClass;
6014 	/** */
6015 	extern(C) void function(GtkPopover* popover) closed;
6016 	/** */
6017 	extern(C) void function(GtkPopover* popover) activateDefault;
6018 	void*[8] reserved;
6019 }
6020 
6021 struct GtkPopoverMenu;
6022 
6023 struct GtkPopoverMenuBar;
6024 
6025 struct GtkPrintBackend;
6026 
6027 struct GtkPrintContext;
6028 
6029 struct GtkPrintJob;
6030 
6031 struct GtkPrintOperation
6032 {
6033 	GObject parentInstance;
6034 	GtkPrintOperationPrivate* priv;
6035 }
6036 
6037 struct GtkPrintOperationClass
6038 {
6039 	/**
6040 	 * The parent class.
6041 	 */
6042 	GObjectClass parentClass;
6043 	/** */
6044 	extern(C) void function(GtkPrintOperation* operation, GtkPrintOperationResult result) done;
6045 	/** */
6046 	extern(C) void function(GtkPrintOperation* operation, GtkPrintContext* context) beginPrint;
6047 	/** */
6048 	extern(C) int function(GtkPrintOperation* operation, GtkPrintContext* context) paginate;
6049 	/** */
6050 	extern(C) void function(GtkPrintOperation* operation, GtkPrintContext* context, int pageNr, GtkPageSetup* setup) requestPageSetup;
6051 	/** */
6052 	extern(C) void function(GtkPrintOperation* operation, GtkPrintContext* context, int pageNr) drawPage;
6053 	/** */
6054 	extern(C) void function(GtkPrintOperation* operation, GtkPrintContext* context) endPrint;
6055 	/** */
6056 	extern(C) void function(GtkPrintOperation* operation) statusChanged;
6057 	/** */
6058 	extern(C) GtkWidget* function(GtkPrintOperation* operation) createCustomWidget;
6059 	/** */
6060 	extern(C) void function(GtkPrintOperation* operation, GtkWidget* widget) customWidgetApply;
6061 	/** */
6062 	extern(C) int function(GtkPrintOperation* operation, GtkPrintOperationPreview* preview, GtkPrintContext* context, GtkWindow* parent) preview;
6063 	/** */
6064 	extern(C) void function(GtkPrintOperation* operation, GtkWidget* widget, GtkPageSetup* setup, GtkPrintSettings* settings) updateCustomWidget;
6065 	void*[8] padding;
6066 }
6067 
6068 struct GtkPrintOperationPreview;
6069 
6070 struct GtkPrintOperationPreviewIface
6071 {
6072 	GTypeInterface gIface;
6073 	/** */
6074 	extern(C) void function(GtkPrintOperationPreview* preview, GtkPrintContext* context) ready;
6075 	/** */
6076 	extern(C) void function(GtkPrintOperationPreview* preview, GtkPrintContext* context, GtkPageSetup* pageSetup) gotPageSize;
6077 	/** */
6078 	extern(C) void function(GtkPrintOperationPreview* preview, int pageNr) renderPage;
6079 	/**
6080 	 *
6081 	 * Params:
6082 	 *     preview = a `GtkPrintOperationPreview`
6083 	 *     pageNr = a page number
6084 	 * Returns: %TRUE if the page has been selected for printing
6085 	 */
6086 	extern(C) int function(GtkPrintOperationPreview* preview, int pageNr) isSelected;
6087 	/** */
6088 	extern(C) void function(GtkPrintOperationPreview* preview) endPreview;
6089 	/** */
6090 	extern(C) void function() GtkReserved1;
6091 	/** */
6092 	extern(C) void function() GtkReserved2;
6093 	/** */
6094 	extern(C) void function() GtkReserved3;
6095 	/** */
6096 	extern(C) void function() GtkReserved4;
6097 	/** */
6098 	extern(C) void function() GtkReserved5;
6099 	/** */
6100 	extern(C) void function() GtkReserved6;
6101 	/** */
6102 	extern(C) void function() GtkReserved7;
6103 	/** */
6104 	extern(C) void function() GtkReserved8;
6105 }
6106 
6107 struct GtkPrintOperationPrivate;
6108 
6109 struct GtkPrintSettings;
6110 
6111 struct GtkPrintUnixDialog;
6112 
6113 struct GtkPrinter;
6114 
6115 struct GtkProgressBar;
6116 
6117 struct GtkPropertyExpression;
6118 
6119 struct GtkRange
6120 {
6121 	GtkWidget parentInstance;
6122 }
6123 
6124 struct GtkRangeClass
6125 {
6126 	GtkWidgetClass parentClass;
6127 	/** */
6128 	extern(C) void function(GtkRange* range) valueChanged;
6129 	/** */
6130 	extern(C) void function(GtkRange* range, double newValue) adjustBounds;
6131 	/** */
6132 	extern(C) void function(GtkRange* range, GtkScrollType scroll) moveSlider;
6133 	/** */
6134 	extern(C) void function(GtkRange* range, GtkBorder* border) getRangeBorder;
6135 	/** */
6136 	extern(C) int function(GtkRange* range, GtkScrollType scroll, double newValue) changeValue;
6137 	void*[8] padding;
6138 }
6139 
6140 /**
6141  * Meta-data to be passed to gtk_recent_manager_add_full() when
6142  * registering a recently used resource.
6143  */
6144 struct GtkRecentData
6145 {
6146 	/**
6147 	 * a UTF-8 encoded string, containing the name of the recently
6148 	 * used resource to be displayed, or %NULL;
6149 	 */
6150 	char* displayName;
6151 	/**
6152 	 * a UTF-8 encoded string, containing a short description of
6153 	 * the resource, or %NULL;
6154 	 */
6155 	char* description;
6156 	/**
6157 	 * the MIME type of the resource;
6158 	 */
6159 	char* mimeType;
6160 	/**
6161 	 * the name of the application that is registering this recently
6162 	 * used resource;
6163 	 */
6164 	char* appName;
6165 	/**
6166 	 * command line used to launch this resource; may contain the
6167 	 * “\%f” and “\%u” escape characters which will be expanded
6168 	 * to the resource file path and URI respectively when the command line
6169 	 * is retrieved;
6170 	 */
6171 	char* appExec;
6172 	/**
6173 	 * a vector of strings containing
6174 	 * groups names;
6175 	 */
6176 	char** groups;
6177 	/**
6178 	 * whether this resource should be displayed only by the
6179 	 * applications that have registered it or not.
6180 	 */
6181 	bool isPrivate;
6182 }
6183 
6184 struct GtkRecentInfo;
6185 
6186 struct GtkRecentManager
6187 {
6188 	GObject parentInstance;
6189 	GtkRecentManagerPrivate* priv;
6190 }
6191 
6192 /**
6193  * `GtkRecentManagerClass` contains only private data.
6194  */
6195 struct GtkRecentManagerClass
6196 {
6197 	GObjectClass parentClass;
6198 	/** */
6199 	extern(C) void function(GtkRecentManager* manager) changed;
6200 	/** */
6201 	extern(C) void function() GtkRecent1;
6202 	/** */
6203 	extern(C) void function() GtkRecent2;
6204 	/** */
6205 	extern(C) void function() GtkRecent3;
6206 	/** */
6207 	extern(C) void function() GtkRecent4;
6208 }
6209 
6210 struct GtkRecentManagerPrivate;
6211 
6212 /**
6213  * Represents a request of a screen object in a given orientation. These
6214  * are primarily used in container implementations when allocating a natural
6215  * size for children calling. See [func@distribute_natural_allocation].
6216  */
6217 struct GtkRequestedSize
6218 {
6219 	/**
6220 	 * A client pointer
6221 	 */
6222 	void* data;
6223 	/**
6224 	 * The minimum size needed for allocation in a given orientation
6225 	 */
6226 	int minimumSize;
6227 	/**
6228 	 * The natural size for allocation in a given orientation
6229 	 */
6230 	int naturalSize;
6231 }
6232 
6233 struct GtkRequisition
6234 {
6235 	/**
6236 	 * the widget’s desired width
6237 	 */
6238 	int width;
6239 	/**
6240 	 * the widget’s desired height
6241 	 */
6242 	int height;
6243 }
6244 
6245 struct GtkRevealer;
6246 
6247 struct GtkRoot;
6248 
6249 struct GtkRootInterface;
6250 
6251 struct GtkScale
6252 {
6253 	GtkRange parentInstance;
6254 }
6255 
6256 struct GtkScaleButton
6257 {
6258 	GtkWidget parentInstance;
6259 }
6260 
6261 struct GtkScaleButtonClass
6262 {
6263 	GtkWidgetClass parentClass;
6264 	/** */
6265 	extern(C) void function(GtkScaleButton* button, double value) valueChanged;
6266 	void*[8] padding;
6267 }
6268 
6269 struct GtkScaleClass
6270 {
6271 	GtkRangeClass parentClass;
6272 	/** */
6273 	extern(C) void function(GtkScale* scale, int* x, int* y) getLayoutOffsets;
6274 	void*[8] padding;
6275 }
6276 
6277 struct GtkScrollable;
6278 
6279 struct GtkScrollableInterface
6280 {
6281 	GTypeInterface baseIface;
6282 	/**
6283 	 *
6284 	 * Params:
6285 	 *     scrollable = a `GtkScrollable`
6286 	 *     border = return location for the results
6287 	 * Returns: %TRUE if @border has been set
6288 	 */
6289 	extern(C) int function(GtkScrollable* scrollable, GtkBorder* border) getBorder;
6290 }
6291 
6292 struct GtkScrollbar;
6293 
6294 struct GtkScrolledWindow;
6295 
6296 struct GtkSearchBar;
6297 
6298 struct GtkSearchEntry;
6299 
6300 struct GtkSelectionFilterModel;
6301 
6302 struct GtkSelectionFilterModelClass
6303 {
6304 	GObjectClass parentClass;
6305 }
6306 
6307 struct GtkSelectionModel;
6308 
6309 /**
6310  * The list of virtual functions for the `GtkSelectionModel` interface.
6311  * No function must be implemented, but unless `GtkSelectionModel::is_selected()`
6312  * is implemented, it will not be possible to select items in the set.
6313  *
6314  * The model does not need to implement any functions to support either
6315  * selecting or unselecting items. Of course, if the model does not do that,
6316  * it means that users cannot select or unselect items in a list widget
6317  * using the model.
6318  *
6319  * All selection functions fall back to `GtkSelectionModel::set_selection()`
6320  * so it is sufficient to implement just that function for full selection
6321  * support.
6322  */
6323 struct GtkSelectionModelInterface
6324 {
6325 	GTypeInterface gIface;
6326 	/**
6327 	 *
6328 	 * Params:
6329 	 *     model = a `GtkSelectionModel`
6330 	 *     position = the position of the item to query
6331 	 * Returns: %TRUE if the item is selected
6332 	 */
6333 	extern(C) int function(GtkSelectionModel* model, uint position) isSelected;
6334 	/**
6335 	 *
6336 	 * Params:
6337 	 *     model = a `GtkSelectionModel`
6338 	 *     position = start of the queired range
6339 	 *     nItems = number of items in the queried range
6340 	 * Returns: A `GtkBitset` that matches the selection state
6341 	 *     for the given range with all other values being undefined.
6342 	 *     The bitset must not be modified.
6343 	 */
6344 	extern(C) GtkBitset* function(GtkSelectionModel* model, uint position, uint nItems) getSelectionInRange;
6345 	/**
6346 	 *
6347 	 * Params:
6348 	 *     model = a `GtkSelectionModel`
6349 	 *     position = the position of the item to select
6350 	 *     unselectRest = whether previously selected items should be unselected
6351 	 * Returns: %TRUE if this action was supported and no fallback should be
6352 	 *     tried. This does not mean the item was selected.
6353 	 */
6354 	extern(C) int function(GtkSelectionModel* model, uint position, int unselectRest) selectItem;
6355 	/**
6356 	 *
6357 	 * Params:
6358 	 *     model = a `GtkSelectionModel`
6359 	 *     position = the position of the item to unselect
6360 	 * Returns: %TRUE if this action was supported and no fallback should be
6361 	 *     tried. This does not mean the item was unselected.
6362 	 */
6363 	extern(C) int function(GtkSelectionModel* model, uint position) unselectItem;
6364 	/**
6365 	 *
6366 	 * Params:
6367 	 *     model = a `GtkSelectionModel`
6368 	 *     position = the first item to select
6369 	 *     nItems = the number of items to select
6370 	 *     unselectRest = whether previously selected items should be unselected
6371 	 * Returns: %TRUE if this action was supported and no fallback should be
6372 	 *     tried. This does not mean the range was selected.
6373 	 */
6374 	extern(C) int function(GtkSelectionModel* model, uint position, uint nItems, int unselectRest) selectRange;
6375 	/**
6376 	 *
6377 	 * Params:
6378 	 *     model = a `GtkSelectionModel`
6379 	 *     position = the first item to unselect
6380 	 *     nItems = the number of items to unselect
6381 	 * Returns: %TRUE if this action was supported and no fallback should be
6382 	 *     tried. This does not mean the range was unselected.
6383 	 */
6384 	extern(C) int function(GtkSelectionModel* model, uint position, uint nItems) unselectRange;
6385 	/**
6386 	 *
6387 	 * Params:
6388 	 *     model = a `GtkSelectionModel`
6389 	 * Returns: %TRUE if this action was supported and no fallback should be
6390 	 *     tried. This does not mean that all items are now selected.
6391 	 */
6392 	extern(C) int function(GtkSelectionModel* model) selectAll;
6393 	/**
6394 	 *
6395 	 * Params:
6396 	 *     model = a `GtkSelectionModel`
6397 	 * Returns: %TRUE if this action was supported and no fallback should be
6398 	 *     tried. This does not mean that all items are now unselected.
6399 	 */
6400 	extern(C) int function(GtkSelectionModel* model) unselectAll;
6401 	/**
6402 	 *
6403 	 * Params:
6404 	 *     model = a `GtkSelectionModel`
6405 	 *     selected = bitmask specifying if items should be selected or unselected
6406 	 *     mask = bitmask specifying which items should be updated
6407 	 * Returns: %TRUE if this action was supported and no fallback should be
6408 	 *     tried. This does not mean that all items were updated according
6409 	 *     to the inputs.
6410 	 */
6411 	extern(C) int function(GtkSelectionModel* model, GtkBitset* selected, GtkBitset* mask) setSelection;
6412 }
6413 
6414 struct GtkSeparator;
6415 
6416 struct GtkSettings;
6417 
6418 struct GtkShortcut;
6419 
6420 struct GtkShortcutAction;
6421 
6422 struct GtkShortcutActionClass;
6423 
6424 struct GtkShortcutClass
6425 {
6426 	GObjectClass parentClass;
6427 }
6428 
6429 struct GtkShortcutController;
6430 
6431 struct GtkShortcutControllerClass;
6432 
6433 struct GtkShortcutLabel;
6434 
6435 struct GtkShortcutLabelClass;
6436 
6437 struct GtkShortcutManager;
6438 
6439 /**
6440  * The list of functions that can be implemented for the `GtkShortcutManager`
6441  * interface.
6442  *
6443  * Note that no function is mandatory to implement, the default implementation
6444  * will work fine.
6445  */
6446 struct GtkShortcutManagerInterface
6447 {
6448 	GTypeInterface gIface;
6449 	/** */
6450 	extern(C) void function(GtkShortcutManager* self, GtkShortcutController* controller) addController;
6451 	/** */
6452 	extern(C) void function(GtkShortcutManager* self, GtkShortcutController* controller) removeController;
6453 }
6454 
6455 struct GtkShortcutTrigger;
6456 
6457 struct GtkShortcutTriggerClass;
6458 
6459 struct GtkShortcutsGroup;
6460 
6461 struct GtkShortcutsGroupClass;
6462 
6463 struct GtkShortcutsSection;
6464 
6465 struct GtkShortcutsSectionClass;
6466 
6467 struct GtkShortcutsShortcut;
6468 
6469 struct GtkShortcutsShortcutClass;
6470 
6471 struct GtkShortcutsWindow;
6472 
6473 struct GtkSignalAction;
6474 
6475 struct GtkSignalActionClass;
6476 
6477 struct GtkSignalListItemFactory;
6478 
6479 struct GtkSignalListItemFactoryClass;
6480 
6481 struct GtkSingleSelection;
6482 
6483 struct GtkSingleSelectionClass
6484 {
6485 	GObjectClass parentClass;
6486 }
6487 
6488 struct GtkSizeGroup
6489 {
6490 	GObject parentInstance;
6491 }
6492 
6493 struct GtkSliceListModel;
6494 
6495 struct GtkSliceListModelClass
6496 {
6497 	GObjectClass parentClass;
6498 }
6499 
6500 struct GtkSnapshot;
6501 
6502 struct GtkSnapshotClass;
6503 
6504 struct GtkSortListModel;
6505 
6506 struct GtkSortListModelClass
6507 {
6508 	GObjectClass parentClass;
6509 }
6510 
6511 struct GtkSorter
6512 {
6513 	GObject parentInstance;
6514 }
6515 
6516 /**
6517  * The virtual table for `GtkSorter`.
6518  */
6519 struct GtkSorterClass
6520 {
6521 	GObjectClass parentClass;
6522 	/**
6523 	 *
6524 	 * Params:
6525 	 *     self = a `GtkSorter`
6526 	 *     item1 = first item to compare
6527 	 *     item2 = second item to compare
6528 	 * Returns: %GTK_ORDERING_EQUAL if @item1 == @item2,
6529 	 *     %GTK_ORDERING_SMALLER if @item1 < @item2,
6530 	 *     %GTK_ORDERING_LARGER if @item1 > @item2
6531 	 */
6532 	extern(C) GtkOrdering function(GtkSorter* self, void* item1, void* item2) compare;
6533 	/**
6534 	 *
6535 	 * Params:
6536 	 *     self = a `GtkSorter`
6537 	 * Returns: The order
6538 	 */
6539 	extern(C) GtkSorterOrder function(GtkSorter* self) getOrder;
6540 	/** */
6541 	extern(C) void function() GtkReserved1;
6542 	/** */
6543 	extern(C) void function() GtkReserved2;
6544 	/** */
6545 	extern(C) void function() GtkReserved3;
6546 	/** */
6547 	extern(C) void function() GtkReserved4;
6548 	/** */
6549 	extern(C) void function() GtkReserved5;
6550 	/** */
6551 	extern(C) void function() GtkReserved6;
6552 	/** */
6553 	extern(C) void function() GtkReserved7;
6554 	/** */
6555 	extern(C) void function() GtkReserved8;
6556 }
6557 
6558 struct GtkSpinButton;
6559 
6560 struct GtkSpinner;
6561 
6562 struct GtkStack;
6563 
6564 struct GtkStackPage;
6565 
6566 struct GtkStackSidebar;
6567 
6568 struct GtkStackSwitcher;
6569 
6570 struct GtkStatusbar;
6571 
6572 struct GtkStringFilter;
6573 
6574 struct GtkStringFilterClass
6575 {
6576 	GtkFilterClass parentClass;
6577 }
6578 
6579 struct GtkStringList;
6580 
6581 struct GtkStringListClass
6582 {
6583 	GObjectClass parentClass;
6584 }
6585 
6586 struct GtkStringObject;
6587 
6588 struct GtkStringObjectClass
6589 {
6590 	GObjectClass parentClass;
6591 }
6592 
6593 struct GtkStringSorter;
6594 
6595 struct GtkStringSorterClass
6596 {
6597 	GtkSorterClass parentClass;
6598 }
6599 
6600 struct GtkStyleContext
6601 {
6602 	GObject parentObject;
6603 }
6604 
6605 struct GtkStyleContextClass
6606 {
6607 	GObjectClass parentClass;
6608 	/** */
6609 	extern(C) void function(GtkStyleContext* context) changed;
6610 	/** */
6611 	extern(C) void function() GtkReserved1;
6612 	/** */
6613 	extern(C) void function() GtkReserved2;
6614 	/** */
6615 	extern(C) void function() GtkReserved3;
6616 	/** */
6617 	extern(C) void function() GtkReserved4;
6618 }
6619 
6620 struct GtkStyleProvider;
6621 
6622 struct GtkSwitch;
6623 
6624 struct GtkSymbolicPaintable;
6625 
6626 /**
6627  * The list of virtual functions for the `GtkSymbolicPaintable` interface.
6628  * No function must be implemented, default implementations exist for each one.
6629  */
6630 struct GtkSymbolicPaintableInterface
6631 {
6632 	GTypeInterface gIface;
6633 	/** */
6634 	extern(C) void function(GtkSymbolicPaintable* paintable, GdkSnapshot* snapshot, double width, double height, GdkRGBA* colors, size_t nColors) snapshotSymbolic;
6635 }
6636 
6637 struct GtkText
6638 {
6639 	GtkWidget parentInstance;
6640 }
6641 
6642 struct GtkTextBuffer
6643 {
6644 	GObject parentInstance;
6645 	GtkTextBufferPrivate* priv;
6646 }
6647 
6648 /**
6649  * The class structure for `GtkTextBuffer`.
6650  */
6651 struct GtkTextBufferClass
6652 {
6653 	/**
6654 	 * The object class structure needs to be the first.
6655 	 */
6656 	GObjectClass parentClass;
6657 	/** */
6658 	extern(C) void function(GtkTextBuffer* buffer, GtkTextIter* pos, const(char)* newText, int newTextLength) insertText;
6659 	/** */
6660 	extern(C) void function(GtkTextBuffer* buffer, GtkTextIter* iter, GdkPaintable* paintable) insertPaintable;
6661 	/** */
6662 	extern(C) void function(GtkTextBuffer* buffer, GtkTextIter* iter, GtkTextChildAnchor* anchor) insertChildAnchor;
6663 	/** */
6664 	extern(C) void function(GtkTextBuffer* buffer, GtkTextIter* start, GtkTextIter* end) deleteRange;
6665 	/** */
6666 	extern(C) void function(GtkTextBuffer* buffer) changed;
6667 	/** */
6668 	extern(C) void function(GtkTextBuffer* buffer) modifiedChanged;
6669 	/** */
6670 	extern(C) void function(GtkTextBuffer* buffer, GtkTextIter* location, GtkTextMark* mark) markSet;
6671 	/** */
6672 	extern(C) void function(GtkTextBuffer* buffer, GtkTextMark* mark) markDeleted;
6673 	/** */
6674 	extern(C) void function(GtkTextBuffer* buffer, GtkTextTag* tag, GtkTextIter* start, GtkTextIter* end) applyTag;
6675 	/** */
6676 	extern(C) void function(GtkTextBuffer* buffer, GtkTextTag* tag, GtkTextIter* start, GtkTextIter* end) removeTag;
6677 	/** */
6678 	extern(C) void function(GtkTextBuffer* buffer) beginUserAction;
6679 	/** */
6680 	extern(C) void function(GtkTextBuffer* buffer) endUserAction;
6681 	/** */
6682 	extern(C) void function(GtkTextBuffer* buffer, GdkClipboard* clipboard) pasteDone;
6683 	/** */
6684 	extern(C) void function(GtkTextBuffer* buffer) undo;
6685 	/** */
6686 	extern(C) void function(GtkTextBuffer* buffer) redo;
6687 	/** */
6688 	extern(C) void function() GtkReserved1;
6689 	/** */
6690 	extern(C) void function() GtkReserved2;
6691 	/** */
6692 	extern(C) void function() GtkReserved3;
6693 	/** */
6694 	extern(C) void function() GtkReserved4;
6695 }
6696 
6697 struct GtkTextBufferPrivate;
6698 
6699 struct GtkTextChildAnchor
6700 {
6701 	GObject parentInstance;
6702 	void* segment;
6703 }
6704 
6705 struct GtkTextChildAnchorClass
6706 {
6707 	GObjectClass parentClass;
6708 	/** */
6709 	extern(C) void function() GtkReserved1;
6710 	/** */
6711 	extern(C) void function() GtkReserved2;
6712 	/** */
6713 	extern(C) void function() GtkReserved3;
6714 	/** */
6715 	extern(C) void function() GtkReserved4;
6716 }
6717 
6718 struct GtkTextIter
6719 {
6720 	void* dummy1;
6721 	void* dummy2;
6722 	int dummy3;
6723 	int dummy4;
6724 	int dummy5;
6725 	int dummy6;
6726 	int dummy7;
6727 	int dummy8;
6728 	void* dummy9;
6729 	void* dummy10;
6730 	int dummy11;
6731 	int dummy12;
6732 	int dummy13;
6733 	void* dummy14;
6734 }
6735 
6736 struct GtkTextMark
6737 {
6738 	GObject parentInstance;
6739 	void* segment;
6740 }
6741 
6742 struct GtkTextMarkClass
6743 {
6744 	GObjectClass parentClass;
6745 	void*[8] padding;
6746 }
6747 
6748 struct GtkTextTag
6749 {
6750 	GObject parentInstance;
6751 	GtkTextTagPrivate* priv;
6752 }
6753 
6754 struct GtkTextTagClass
6755 {
6756 	GObjectClass parentClass;
6757 	void*[8] padding;
6758 }
6759 
6760 struct GtkTextTagPrivate;
6761 
6762 struct GtkTextTagTable;
6763 
6764 struct GtkTextView
6765 {
6766 	GtkWidget parentInstance;
6767 	GtkTextViewPrivate* priv;
6768 }
6769 
6770 struct GtkTextViewClass
6771 {
6772 	/**
6773 	 * The object class structure needs to be the first
6774 	 */
6775 	GtkWidgetClass parentClass;
6776 	/** */
6777 	extern(C) void function(GtkTextView* textView, GtkMovementStep step, int count, int extendSelection) moveCursor;
6778 	/** */
6779 	extern(C) void function(GtkTextView* textView) setAnchor;
6780 	/** */
6781 	extern(C) void function(GtkTextView* textView, const(char)* str) insertAtCursor;
6782 	/** */
6783 	extern(C) void function(GtkTextView* textView, GtkDeleteType type, int count) deleteFromCursor;
6784 	/** */
6785 	extern(C) void function(GtkTextView* textView) backspace;
6786 	/** */
6787 	extern(C) void function(GtkTextView* textView) cutClipboard;
6788 	/** */
6789 	extern(C) void function(GtkTextView* textView) copyClipboard;
6790 	/** */
6791 	extern(C) void function(GtkTextView* textView) pasteClipboard;
6792 	/** */
6793 	extern(C) void function(GtkTextView* textView) toggleOverwrite;
6794 	/** */
6795 	extern(C) GtkTextBuffer* function(GtkTextView* textView) createBuffer;
6796 	/** */
6797 	extern(C) void function(GtkTextView* textView, GtkTextViewLayer layer, GtkSnapshot* snapshot) snapshotLayer;
6798 	/** */
6799 	extern(C) int function(GtkTextView* textView, GtkTextExtendSelection granularity, GtkTextIter* location, GtkTextIter* start, GtkTextIter* end) extendSelection;
6800 	/** */
6801 	extern(C) void function(GtkTextView* textView) insertEmoji;
6802 	void*[8] padding;
6803 }
6804 
6805 struct GtkTextViewPrivate;
6806 
6807 struct GtkToggleButton
6808 {
6809 	GtkButton button;
6810 }
6811 
6812 struct GtkToggleButtonClass
6813 {
6814 	GtkButtonClass parentClass;
6815 	/** */
6816 	extern(C) void function(GtkToggleButton* toggleButton) toggled;
6817 	void*[8] padding;
6818 }
6819 
6820 struct GtkTooltip;
6821 
6822 struct GtkTreeDragDest;
6823 
6824 struct GtkTreeDragDestIface
6825 {
6826 	GTypeInterface gIface;
6827 	/**
6828 	 *
6829 	 * Params:
6830 	 *     dragDest = a `GtkTreeDragDest`
6831 	 *     dest = row to drop in front of
6832 	 *     value = data to drop
6833 	 * Returns: whether a new row was created before position @dest
6834 	 */
6835 	extern(C) int function(GtkTreeDragDest* dragDest, GtkTreePath* dest, GValue* value) dragDataReceived;
6836 	/**
6837 	 *
6838 	 * Params:
6839 	 *     dragDest = a `GtkTreeDragDest`
6840 	 *     destPath = destination row
6841 	 *     value = the data being dropped
6842 	 * Returns: %TRUE if a drop is possible before @dest_path
6843 	 */
6844 	extern(C) int function(GtkTreeDragDest* dragDest, GtkTreePath* destPath, GValue* value) rowDropPossible;
6845 }
6846 
6847 struct GtkTreeDragSource;
6848 
6849 struct GtkTreeDragSourceIface
6850 {
6851 	GTypeInterface gIface;
6852 	/**
6853 	 *
6854 	 * Params:
6855 	 *     dragSource = a `GtkTreeDragSource`
6856 	 *     path = row on which user is initiating a drag
6857 	 * Returns: %TRUE if the row can be dragged
6858 	 */
6859 	extern(C) int function(GtkTreeDragSource* dragSource, GtkTreePath* path) rowDraggable;
6860 	/**
6861 	 *
6862 	 * Params:
6863 	 *     dragSource = a `GtkTreeDragSource`
6864 	 *     path = row that was dragged
6865 	 * Returns: a `GdkContentProvider` for the
6866 	 *     given @path
6867 	 */
6868 	extern(C) GdkContentProvider* function(GtkTreeDragSource* dragSource, GtkTreePath* path) dragDataGet;
6869 	/**
6870 	 *
6871 	 * Params:
6872 	 *     dragSource = a `GtkTreeDragSource`
6873 	 *     path = row that was being dragged
6874 	 * Returns: %TRUE if the row was successfully deleted
6875 	 */
6876 	extern(C) int function(GtkTreeDragSource* dragSource, GtkTreePath* path) dragDataDelete;
6877 }
6878 
6879 struct GtkTreeExpander;
6880 
6881 struct GtkTreeExpanderClass
6882 {
6883 	GtkWidgetClass parentClass;
6884 }
6885 
6886 struct GtkTreeIter
6887 {
6888 	/**
6889 	 * a unique stamp to catch invalid iterators
6890 	 */
6891 	int stamp;
6892 	/**
6893 	 * model-specific data
6894 	 */
6895 	void* userData;
6896 	/**
6897 	 * model-specific data
6898 	 */
6899 	void* userData2;
6900 	/**
6901 	 * model-specific data
6902 	 */
6903 	void* userData3;
6904 }
6905 
6906 struct GtkTreeListModel;
6907 
6908 struct GtkTreeListModelClass
6909 {
6910 	GObjectClass parentClass;
6911 }
6912 
6913 struct GtkTreeListRow;
6914 
6915 struct GtkTreeListRowClass
6916 {
6917 	GObjectClass parentClass;
6918 }
6919 
6920 struct GtkTreeListRowSorter;
6921 
6922 struct GtkTreeListRowSorterClass
6923 {
6924 	GtkSorterClass parentClass;
6925 }
6926 
6927 struct GtkTreeModel;
6928 
6929 struct GtkTreeModelFilter
6930 {
6931 	GObject parent;
6932 	GtkTreeModelFilterPrivate* priv;
6933 }
6934 
6935 struct GtkTreeModelFilterClass
6936 {
6937 	GObjectClass parentClass;
6938 	/** */
6939 	extern(C) int function(GtkTreeModelFilter* self, GtkTreeModel* childModel, GtkTreeIter* iter) visible;
6940 	/** */
6941 	extern(C) void function(GtkTreeModelFilter* self, GtkTreeModel* childModel, GtkTreeIter* iter, GValue* value, int column) modify;
6942 	void*[8] padding;
6943 }
6944 
6945 struct GtkTreeModelFilterPrivate;
6946 
6947 struct GtkTreeModelIface
6948 {
6949 	GTypeInterface gIface;
6950 	/** */
6951 	extern(C) void function(GtkTreeModel* treeModel, GtkTreePath* path, GtkTreeIter* iter) rowChanged;
6952 	/** */
6953 	extern(C) void function(GtkTreeModel* treeModel, GtkTreePath* path, GtkTreeIter* iter) rowInserted;
6954 	/** */
6955 	extern(C) void function(GtkTreeModel* treeModel, GtkTreePath* path, GtkTreeIter* iter) rowHasChildToggled;
6956 	/** */
6957 	extern(C) void function(GtkTreeModel* treeModel, GtkTreePath* path) rowDeleted;
6958 	/** */
6959 	extern(C) void function(GtkTreeModel* treeModel, GtkTreePath* path, GtkTreeIter* iter, int* newOrder) rowsReordered;
6960 	/**
6961 	 *
6962 	 * Params:
6963 	 *     treeModel = a `GtkTreeModel`
6964 	 * Returns: the flags supported by this interface
6965 	 */
6966 	extern(C) GtkTreeModelFlags function(GtkTreeModel* treeModel) getFlags;
6967 	/**
6968 	 *
6969 	 * Params:
6970 	 *     treeModel = a `GtkTreeModel`
6971 	 * Returns: the number of columns
6972 	 */
6973 	extern(C) int function(GtkTreeModel* treeModel) getNColumns;
6974 	/**
6975 	 *
6976 	 * Params:
6977 	 *     treeModel = a `GtkTreeModel`
6978 	 *     index = the column index
6979 	 * Returns: the type of the column
6980 	 */
6981 	extern(C) GType function(GtkTreeModel* treeModel, int index) getColumnType;
6982 	/**
6983 	 *
6984 	 * Params:
6985 	 *     treeModel = a `GtkTreeModel`
6986 	 *     iter = the uninitialized `GtkTreeIter`
6987 	 *     path = the `GtkTreePath`
6988 	 * Returns: %TRUE, if @iter was set
6989 	 */
6990 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter, GtkTreePath* path) getIter;
6991 	/**
6992 	 *
6993 	 * Params:
6994 	 *     treeModel = a `GtkTreeModel`
6995 	 *     iter = the `GtkTreeIter`
6996 	 * Returns: a newly-created `GtkTreePath`
6997 	 */
6998 	extern(C) GtkTreePath* function(GtkTreeModel* treeModel, GtkTreeIter* iter) getPath;
6999 	/** */
7000 	extern(C) void function(GtkTreeModel* treeModel, GtkTreeIter* iter, int column, GValue* value) getValue;
7001 	/**
7002 	 *
7003 	 * Params:
7004 	 *     treeModel = a `GtkTreeModel`
7005 	 *     iter = the `GtkTreeIter`
7006 	 * Returns: %TRUE if @iter has been changed to the next node
7007 	 */
7008 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter) iterNext;
7009 	/**
7010 	 *
7011 	 * Params:
7012 	 *     treeModel = a `GtkTreeModel`
7013 	 *     iter = the `GtkTreeIter`
7014 	 * Returns: %TRUE if @iter has been changed to the previous node
7015 	 */
7016 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter) iterPrevious;
7017 	/**
7018 	 *
7019 	 * Params:
7020 	 *     treeModel = a `GtkTreeModel`
7021 	 *     iter = the new `GtkTreeIter` to be set to the child
7022 	 *     parent = the `GtkTreeIter`
7023 	 * Returns: %TRUE, if @iter has been set to the first child
7024 	 */
7025 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter, GtkTreeIter* parent) iterChildren;
7026 	/**
7027 	 *
7028 	 * Params:
7029 	 *     treeModel = a `GtkTreeModel`
7030 	 *     iter = the `GtkTreeIter` to test for children
7031 	 * Returns: %TRUE if @iter has children
7032 	 */
7033 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter) iterHasChild;
7034 	/**
7035 	 *
7036 	 * Params:
7037 	 *     treeModel = a `GtkTreeModel`
7038 	 *     iter = the `GtkTreeIter`
7039 	 * Returns: the number of children of @iter
7040 	 */
7041 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter) iterNChildren;
7042 	/**
7043 	 *
7044 	 * Params:
7045 	 *     treeModel = a `GtkTreeModel`
7046 	 *     iter = the `GtkTreeIter` to set to the nth child
7047 	 *     parent = the `GtkTreeIter` to get the child from
7048 	 *     n = the index of the desired child
7049 	 * Returns: %TRUE, if @parent has an @n-th child
7050 	 */
7051 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter, GtkTreeIter* parent, int n) iterNthChild;
7052 	/**
7053 	 *
7054 	 * Params:
7055 	 *     treeModel = a `GtkTreeModel`
7056 	 *     iter = the new `GtkTreeIter` to set to the parent
7057 	 *     child = the `GtkTreeIter`
7058 	 * Returns: %TRUE, if @iter is set to the parent of @child
7059 	 */
7060 	extern(C) int function(GtkTreeModel* treeModel, GtkTreeIter* iter, GtkTreeIter* child) iterParent;
7061 	/** */
7062 	extern(C) void function(GtkTreeModel* treeModel, GtkTreeIter* iter) refNode;
7063 	/** */
7064 	extern(C) void function(GtkTreeModel* treeModel, GtkTreeIter* iter) unrefNode;
7065 }
7066 
7067 struct GtkTreeModelSort
7068 {
7069 	GObject parent;
7070 	GtkTreeModelSortPrivate* priv;
7071 }
7072 
7073 struct GtkTreeModelSortClass
7074 {
7075 	GObjectClass parentClass;
7076 	void*[8] padding;
7077 }
7078 
7079 struct GtkTreeModelSortPrivate;
7080 
7081 struct GtkTreePath;
7082 
7083 struct GtkTreeRowReference;
7084 
7085 struct GtkTreeSelection;
7086 
7087 struct GtkTreeSortable;
7088 
7089 struct GtkTreeSortableIface
7090 {
7091 	GTypeInterface gIface;
7092 	/** */
7093 	extern(C) void function(GtkTreeSortable* sortable) sortColumnChanged;
7094 	/**
7095 	 *
7096 	 * Params:
7097 	 *     sortable = A `GtkTreeSortable`
7098 	 *     sortColumnId = The sort column id to be filled in
7099 	 *     order = The `GtkSortType` to be filled in
7100 	 * Returns: %TRUE if the sort column is not one of the special sort
7101 	 *     column ids.
7102 	 */
7103 	extern(C) int function(GtkTreeSortable* sortable, int* sortColumnId, GtkSortType* order) getSortColumnId;
7104 	/** */
7105 	extern(C) void function(GtkTreeSortable* sortable, int sortColumnId, GtkSortType order) setSortColumnId;
7106 	/** */
7107 	extern(C) void function(GtkTreeSortable* sortable, int sortColumnId, GtkTreeIterCompareFunc sortFunc, void* userData, GDestroyNotify destroy) setSortFunc;
7108 	/** */
7109 	extern(C) void function(GtkTreeSortable* sortable, GtkTreeIterCompareFunc sortFunc, void* userData, GDestroyNotify destroy) setDefaultSortFunc;
7110 	/**
7111 	 *
7112 	 * Params:
7113 	 *     sortable = A `GtkTreeSortable`
7114 	 * Returns: %TRUE, if the model has a default sort function
7115 	 */
7116 	extern(C) int function(GtkTreeSortable* sortable) hasDefaultSortFunc;
7117 }
7118 
7119 struct GtkTreeStore
7120 {
7121 	GObject parent;
7122 	GtkTreeStorePrivate* priv;
7123 }
7124 
7125 struct GtkTreeStoreClass
7126 {
7127 	GObjectClass parentClass;
7128 	void*[8] padding;
7129 }
7130 
7131 struct GtkTreeStorePrivate;
7132 
7133 struct GtkTreeView
7134 {
7135 	GtkWidget parentInstance;
7136 }
7137 
7138 struct GtkTreeViewClass
7139 {
7140 	GtkWidgetClass parentClass;
7141 	/** */
7142 	extern(C) void function(GtkTreeView* treeView, GtkTreePath* path, GtkTreeViewColumn* column) rowActivated;
7143 	/** */
7144 	extern(C) int function(GtkTreeView* treeView, GtkTreeIter* iter, GtkTreePath* path) testExpandRow;
7145 	/** */
7146 	extern(C) int function(GtkTreeView* treeView, GtkTreeIter* iter, GtkTreePath* path) testCollapseRow;
7147 	/** */
7148 	extern(C) void function(GtkTreeView* treeView, GtkTreeIter* iter, GtkTreePath* path) rowExpanded;
7149 	/** */
7150 	extern(C) void function(GtkTreeView* treeView, GtkTreeIter* iter, GtkTreePath* path) rowCollapsed;
7151 	/** */
7152 	extern(C) void function(GtkTreeView* treeView) columnsChanged;
7153 	/** */
7154 	extern(C) void function(GtkTreeView* treeView) cursorChanged;
7155 	/** */
7156 	extern(C) int function(GtkTreeView* treeView, GtkMovementStep step, int count, int extend, int modify) moveCursor;
7157 	/** */
7158 	extern(C) int function(GtkTreeView* treeView) selectAll;
7159 	/** */
7160 	extern(C) int function(GtkTreeView* treeView) unselectAll;
7161 	/** */
7162 	extern(C) int function(GtkTreeView* treeView, int startEditing) selectCursorRow;
7163 	/** */
7164 	extern(C) int function(GtkTreeView* treeView) toggleCursorRow;
7165 	/** */
7166 	extern(C) int function(GtkTreeView* treeView, int logical, int expand, int openAll) expandCollapseCursorRow;
7167 	/** */
7168 	extern(C) int function(GtkTreeView* treeView) selectCursorParent;
7169 	/** */
7170 	extern(C) int function(GtkTreeView* treeView) startInteractiveSearch;
7171 	void*[16] Reserved;
7172 }
7173 
7174 struct GtkTreeViewColumn;
7175 
7176 struct GtkVideo;
7177 
7178 struct GtkVideoClass
7179 {
7180 	GtkWidgetClass parentClass;
7181 }
7182 
7183 struct GtkViewport;
7184 
7185 struct GtkVolumeButton
7186 {
7187 	GtkScaleButton parent;
7188 }
7189 
7190 struct GtkWidget
7191 {
7192 	GObject parentInstance;
7193 	GtkWidgetPrivate* priv;
7194 }
7195 
7196 struct GtkWidgetClass
7197 {
7198 	/**
7199 	 * The object class structure needs to be the first
7200 	 * element in the widget class structure in order for the class mechanism
7201 	 * to work correctly. This allows a GtkWidgetClass pointer to be cast to
7202 	 * a GObjectClass pointer.
7203 	 */
7204 	GObjectClass parentClass;
7205 	/** */
7206 	extern(C) void function(GtkWidget* widget) show;
7207 	/** */
7208 	extern(C) void function(GtkWidget* widget) hide;
7209 	/** */
7210 	extern(C) void function(GtkWidget* widget) map;
7211 	/** */
7212 	extern(C) void function(GtkWidget* widget) unmap;
7213 	/** */
7214 	extern(C) void function(GtkWidget* widget) realize;
7215 	/** */
7216 	extern(C) void function(GtkWidget* widget) unrealize;
7217 	/** */
7218 	extern(C) void function(GtkWidget* widget) root;
7219 	/** */
7220 	extern(C) void function(GtkWidget* widget) unroot;
7221 	/** */
7222 	extern(C) void function(GtkWidget* widget, int width, int height, int baseline) sizeAllocate;
7223 	/** */
7224 	extern(C) void function(GtkWidget* widget, GtkStateFlags previousStateFlags) stateFlagsChanged;
7225 	/** */
7226 	extern(C) void function(GtkWidget* widget, GtkTextDirection previousDirection) directionChanged;
7227 	/**
7228 	 *
7229 	 * Params:
7230 	 *     widget = a `GtkWidget` instance
7231 	 * Returns: The `GtkSizeRequestMode` preferred by @widget.
7232 	 */
7233 	extern(C) GtkSizeRequestMode function(GtkWidget* widget) getRequestMode;
7234 	/** */
7235 	extern(C) void function(GtkWidget* widget, GtkOrientation orientation, int forSize, int* minimum, int* natural, int* minimumBaseline, int* naturalBaseline) measure;
7236 	/**
7237 	 *
7238 	 * Params:
7239 	 *     widget = a `GtkWidget`
7240 	 *     groupCycling = %TRUE if there are other widgets with the same mnemonic
7241 	 * Returns: %TRUE if the signal has been handled
7242 	 */
7243 	extern(C) int function(GtkWidget* widget, int groupCycling) mnemonicActivate;
7244 	/**
7245 	 *
7246 	 * Params:
7247 	 *     widget = a `GtkWidget`
7248 	 * Returns: %TRUE if focus is now inside @widget.
7249 	 */
7250 	extern(C) int function(GtkWidget* widget) grabFocus;
7251 	/** */
7252 	extern(C) int function(GtkWidget* widget, GtkDirectionType direction) focus;
7253 	/** */
7254 	extern(C) void function(GtkWidget* widget, GtkWidget* child) setFocusChild;
7255 	/** */
7256 	extern(C) void function(GtkWidget* widget, GtkDirectionType direction) moveFocus;
7257 	/**
7258 	 *
7259 	 * Params:
7260 	 *     widget = a `GtkWidget`
7261 	 *     direction = direction of focus movement
7262 	 * Returns: %TRUE if stopping keyboard navigation is fine, %FALSE
7263 	 *     if the emitting widget should try to handle the keyboard
7264 	 *     navigation attempt in its parent container(s).
7265 	 */
7266 	extern(C) int function(GtkWidget* widget, GtkDirectionType direction) keynavFailed;
7267 	/** */
7268 	extern(C) int function(GtkWidget* widget, int x, int y, int keyboardTooltip, GtkTooltip* tooltip) queryTooltip;
7269 	/** */
7270 	extern(C) void function(GtkWidget* widget, int* hexpandP, int* vexpandP) computeExpand;
7271 	/** */
7272 	extern(C) void function(GtkWidget* widget, GtkCssStyleChange* change) cssChanged;
7273 	/** */
7274 	extern(C) void function(GtkWidget* widget, GtkSystemSetting settings) systemSettingChanged;
7275 	/** */
7276 	extern(C) void function(GtkWidget* widget, GtkSnapshot* snapshot) snapshot;
7277 	/**
7278 	 *
7279 	 * Params:
7280 	 *     widget = the widget to query
7281 	 *     x = X coordinate to test, relative to @widget's origin
7282 	 *     y = Y coordinate to test, relative to @widget's origin
7283 	 * Returns: %TRUE if @widget contains (@x, @y).
7284 	 */
7285 	extern(C) int function(GtkWidget* widget, double x, double y) contains;
7286 	GtkWidgetClassPrivate* priv;
7287 	void*[8] padding;
7288 }
7289 
7290 struct GtkWidgetClassPrivate;
7291 
7292 struct GtkWidgetPaintable;
7293 
7294 struct GtkWidgetPaintableClass
7295 {
7296 	GObjectClass parentClass;
7297 }
7298 
7299 struct GtkWidgetPrivate;
7300 
7301 struct GtkWindow
7302 {
7303 	GtkWidget parentInstance;
7304 }
7305 
7306 struct GtkWindowClass
7307 {
7308 	/**
7309 	 * The parent class.
7310 	 */
7311 	GtkWidgetClass parentClass;
7312 	/** */
7313 	extern(C) void function(GtkWindow* window) activateFocus;
7314 	/** */
7315 	extern(C) void function(GtkWindow* window) activateDefault;
7316 	/** */
7317 	extern(C) void function(GtkWindow* window) keysChanged;
7318 	/** */
7319 	extern(C) int function(GtkWindow* window, int toggle) enableDebugging;
7320 	/** */
7321 	extern(C) int function(GtkWindow* window) closeRequest;
7322 	void*[8] padding;
7323 }
7324 
7325 struct GtkWindowControls;
7326 
7327 struct GtkWindowControlsClass
7328 {
7329 	GtkWidgetClass parentClass;
7330 }
7331 
7332 struct GtkWindowGroup
7333 {
7334 	GObject parentInstance;
7335 	GtkWindowGroupPrivate* priv;
7336 }
7337 
7338 struct GtkWindowGroupClass
7339 {
7340 	GObjectClass parentClass;
7341 	/** */
7342 	extern(C) void function() GtkReserved1;
7343 	/** */
7344 	extern(C) void function() GtkReserved2;
7345 	/** */
7346 	extern(C) void function() GtkReserved3;
7347 	/** */
7348 	extern(C) void function() GtkReserved4;
7349 }
7350 
7351 struct GtkWindowGroupPrivate;
7352 
7353 struct GtkWindowHandle;
7354 
7355 struct GtkWindowHandleClass
7356 {
7357 	GtkWidgetClass parentClass;
7358 }
7359 
7360 /**
7361  * Type of callback used to calculate the next page in a `GtkAssistant`.
7362  *
7363  * It’s called both for computing the next page when the user presses the
7364  * “forward” button and for handling the behavior of the “last” button.
7365  *
7366  * See [method@Gtk.Assistant.set_forward_page_func].
7367  *
7368  * Params:
7369  *     currentPage = The page number used to calculate the next page.
7370  *     data = user data.
7371  *
7372  * Returns: The next page number
7373  */
7374 public alias extern(C) int function(int currentPage, void* data) GtkAssistantPageFunc;
7375 
7376 /**
7377  * The type of the callback functions used for iterating over the
7378  * cell renderers and their allocated areas inside a `GtkCellArea`,
7379  * see gtk_cell_area_foreach_alloc().
7380  *
7381  * Params:
7382  *     renderer = the cell renderer to operate on
7383  *     cellArea = the area allocated to @renderer inside the rectangle
7384  *         provided to gtk_cell_area_foreach_alloc().
7385  *     cellBackground = the background area for @renderer inside the
7386  *         background area provided to gtk_cell_area_foreach_alloc().
7387  *     data = user-supplied data
7388  *
7389  * Returns: %TRUE to stop iterating over cells.
7390  */
7391 public alias extern(C) int function(GtkCellRenderer* renderer, GdkRectangle* cellArea, GdkRectangle* cellBackground, void* data) GtkCellAllocCallback;
7392 
7393 /**
7394  * The type of the callback functions used for iterating over
7395  * the cell renderers of a `GtkCellArea`, see gtk_cell_area_foreach().
7396  *
7397  * Params:
7398  *     renderer = the cell renderer to operate on
7399  *     data = user-supplied data
7400  *
7401  * Returns: %TRUE to stop iterating over cells.
7402  */
7403 public alias extern(C) int function(GtkCellRenderer* renderer, void* data) GtkCellCallback;
7404 
7405 /**
7406  * A function which should set the value of @cell_layout’s cell renderer(s)
7407  * as appropriate.
7408  *
7409  * Params:
7410  *     cellLayout = a `GtkCellLayout`
7411  *     cell = the cell renderer whose value is to be set
7412  *     treeModel = the model
7413  *     iter = a `GtkTreeIter` indicating the row to set the value for
7414  *     data = user data passed to gtk_cell_layout_set_cell_data_func()
7415  */
7416 public alias extern(C) void function(GtkCellLayout* cellLayout, GtkCellRenderer* cell, GtkTreeModel* treeModel, GtkTreeIter* iter, void* data) GtkCellLayoutDataFunc;
7417 
7418 /**
7419  * A function to be used by `GtkCustomLayout` to allocate a widget.
7420  *
7421  * Params:
7422  *     widget = the widget to allocate
7423  *     width = the new width of the widget
7424  *     height = the new height of the widget
7425  *     baseline = the new baseline of the widget, or -1
7426  */
7427 public alias extern(C) void function(GtkWidget* widget, int width, int height, int baseline) GtkCustomAllocateFunc;
7428 
7429 /**
7430  * User function that is called to determine if the @item should be matched.
7431  *
7432  * If the filter matches the item, this function must return %TRUE. If the
7433  * item should be filtered out, %FALSE must be returned.
7434  *
7435  * Params:
7436  *     item = The item to be matched
7437  *     userData = user data
7438  *
7439  * Returns: %TRUE to keep the item around
7440  */
7441 public alias extern(C) int function(void* item, void* userData) GtkCustomFilterFunc;
7442 
7443 /**
7444  * A function to be used by `GtkCustomLayout` to measure a widget.
7445  *
7446  * Params:
7447  *     widget = the widget to be measured
7448  *     orientation = the direction to be measured
7449  *     forSize = the size to be measured for
7450  *     minimum = the measured minimum size of the widget
7451  *     natural = the measured natural size of the widget
7452  *     minimumBaseline = the measured minimum baseline of the widget
7453  *     naturalBaseline = the measured natural baseline of the widget
7454  */
7455 public alias extern(C) void function(GtkWidget* widget, GtkOrientation orientation, int forSize, int* minimum, int* natural, int* minimumBaseline, int* naturalBaseline) GtkCustomMeasureFunc;
7456 
7457 /**
7458  * Queries a widget for its preferred size request mode.
7459  *
7460  * Params:
7461  *     widget = the widget to be queried
7462  *
7463  * Returns: the size request mode
7464  */
7465 public alias extern(C) GtkSizeRequestMode function(GtkWidget* widget) GtkCustomRequestModeFunc;
7466 
7467 /**
7468  * Whenever @drawing_area needs to redraw, this function will be called.
7469  *
7470  * This function should exclusively redraw the contents of the drawing area
7471  * and must not call any widget functions that cause changes.
7472  *
7473  * Params:
7474  *     drawingArea = the `GtkDrawingArea` to redraw
7475  *     cr = the context to draw to
7476  *     width = the actual width of the contents. This value will be at least
7477  *         as wide as GtkDrawingArea:width.
7478  *     height = the actual height of the contents. This value will be at least
7479  *         as wide as GtkDrawingArea:height.
7480  *     userData = user data
7481  */
7482 public alias extern(C) void function(GtkDrawingArea* drawingArea, cairo_t* cr, int width, int height, void* userData) GtkDrawingAreaDrawFunc;
7483 
7484 /**
7485  * A function which decides whether the row indicated by @iter matches
7486  * a given @key, and should be displayed as a possible completion for @key.
7487  *
7488  * Note that @key is normalized and case-folded (see g_utf8_normalize()
7489  * and g_utf8_casefold()). If this is not appropriate, match functions
7490  * have access to the unmodified key via
7491  * `gtk_editable_get_text (GTK_EDITABLE (gtk_entry_completion_get_entry ()))`.
7492  *
7493  * Params:
7494  *     completion = the `GtkEntryCompletion`
7495  *     key = the string to match, normalized and case-folded
7496  *     iter = a `GtkTreeIter` indicating the row to match
7497  *     userData = user data given to gtk_entry_completion_set_match_func()
7498  *
7499  * Returns: %TRUE if @iter should be displayed as a possible completion
7500  *     for @key
7501  */
7502 public alias extern(C) int function(GtkEntryCompletion* completion, const(char)* key, GtkTreeIter* iter, void* userData) GtkEntryCompletionMatchFunc;
7503 
7504 /**
7505  * Callback called by gtk_expression_watch() when the
7506  * expression value changes.
7507  *
7508  * Params:
7509  *     userData = data passed to gtk_expression_watch()
7510  */
7511 public alias extern(C) void function(void* userData) GtkExpressionNotify;
7512 
7513 /**
7514  * Called for flow boxes that are bound to a `GListModel`.
7515  *
7516  * This function is called for each item that gets added to the model.
7517  *
7518  * Params:
7519  *     item = the item from the model for which to create a widget for
7520  *     userData = user data from gtk_flow_box_bind_model()
7521  *
7522  * Returns: a `GtkWidget` that represents @item
7523  */
7524 public alias extern(C) GtkWidget* function(void* item, void* userData) GtkFlowBoxCreateWidgetFunc;
7525 
7526 /**
7527  * A function that will be called whenever a child changes
7528  * or is added.
7529  *
7530  * It lets you control if the child should be visible or not.
7531  *
7532  * Params:
7533  *     child = a `GtkFlowBoxChild` that may be filtered
7534  *     userData = user data
7535  *
7536  * Returns: %TRUE if the row should be visible, %FALSE otherwise
7537  */
7538 public alias extern(C) int function(GtkFlowBoxChild* child, void* userData) GtkFlowBoxFilterFunc;
7539 
7540 /**
7541  * A function used by gtk_flow_box_selected_foreach().
7542  *
7543  * It will be called on every selected child of the @box.
7544  *
7545  * Params:
7546  *     box = a `GtkFlowBox`
7547  *     child = a `GtkFlowBoxChild`
7548  *     userData = user data
7549  */
7550 public alias extern(C) void function(GtkFlowBox* box, GtkFlowBoxChild* child, void* userData) GtkFlowBoxForeachFunc;
7551 
7552 /**
7553  * A function to compare two children to determine which
7554  * should come first.
7555  *
7556  * Params:
7557  *     child1 = the first child
7558  *     child2 = the second child
7559  *     userData = user data
7560  *
7561  * Returns: < 0 if @child1 should be before @child2, 0 if
7562  *     the are equal, and > 0 otherwise
7563  */
7564 public alias extern(C) int function(GtkFlowBoxChild* child1, GtkFlowBoxChild* child2, void* userData) GtkFlowBoxSortFunc;
7565 
7566 /**
7567  * The type of function that is used for deciding what fonts get
7568  * shown in a `GtkFontChooser`.
7569  *
7570  * See [method@Gtk.FontChooser.set_filter_func].
7571  *
7572  * Params:
7573  *     family = a `PangoFontFamily`
7574  *     face = a `PangoFontFace` belonging to @family
7575  *     data = user data passed to gtk_font_chooser_set_filter_func()
7576  *
7577  * Returns: %TRUE if the font should be displayed
7578  */
7579 public alias extern(C) int function(PangoFontFamily* family, PangoFontFace* face, void* data) GtkFontFilterFunc;
7580 
7581 /**
7582  * A function used by gtk_icon_view_selected_foreach() to map all
7583  * selected rows.
7584  *
7585  * It will be called on every selected row in the view.
7586  *
7587  * Params:
7588  *     iconView = a `GtkIconView`
7589  *     path = The `GtkTreePath` of a selected row
7590  *     data = user data
7591  */
7592 public alias extern(C) void function(GtkIconView* iconView, GtkTreePath* path, void* data) GtkIconViewForeachFunc;
7593 
7594 /**
7595  * Called for list boxes that are bound to a `GListModel` with
7596  * gtk_list_box_bind_model() for each item that gets added to the model.
7597  *
7598  * If the widget returned is not a #GtkListBoxRow widget, then the widget
7599  * will be inserted as the child of an intermediate #GtkListBoxRow.
7600  *
7601  * Params:
7602  *     item = the item from the model for which to create a widget for
7603  *     userData = user data
7604  *
7605  * Returns: a `GtkWidget` that represents @item
7606  */
7607 public alias extern(C) GtkWidget* function(void* item, void* userData) GtkListBoxCreateWidgetFunc;
7608 
7609 /**
7610  * Will be called whenever the row changes or is added and lets you control
7611  * if the row should be visible or not.
7612  *
7613  * Params:
7614  *     row = the row that may be filtered
7615  *     userData = user data
7616  *
7617  * Returns: %TRUE if the row should be visible, %FALSE otherwise
7618  */
7619 public alias extern(C) int function(GtkListBoxRow* row, void* userData) GtkListBoxFilterFunc;
7620 
7621 /**
7622  * A function used by gtk_list_box_selected_foreach().
7623  *
7624  * It will be called on every selected child of the @box.
7625  *
7626  * Params:
7627  *     box = a `GtkListBox`
7628  *     row = a `GtkListBoxRow`
7629  *     userData = user data
7630  */
7631 public alias extern(C) void function(GtkListBox* box, GtkListBoxRow* row, void* userData) GtkListBoxForeachFunc;
7632 
7633 /**
7634  * Compare two rows to determine which should be first.
7635  *
7636  * Params:
7637  *     row1 = the first row
7638  *     row2 = the second row
7639  *     userData = user data
7640  *
7641  * Returns: < 0 if @row1 should be before @row2, 0 if they are
7642  *     equal and > 0 otherwise
7643  */
7644 public alias extern(C) int function(GtkListBoxRow* row1, GtkListBoxRow* row2, void* userData) GtkListBoxSortFunc;
7645 
7646 /**
7647  * Whenever @row changes or which row is before @row changes this
7648  * is called, which lets you update the header on @row.
7649  *
7650  * You may remove or set a new one via [method@Gtk.ListBoxRow.set_header]
7651  * or just change the state of the current header widget.
7652  *
7653  * Params:
7654  *     row = the row to update
7655  *     before = the row before @row, or %NULL if it is first
7656  *     userData = user data
7657  */
7658 public alias extern(C) void function(GtkListBoxRow* row, GtkListBoxRow* before, void* userData) GtkListBoxUpdateHeaderFunc;
7659 
7660 /**
7661  * User function that is called to map an @item of the original model to
7662  * an item expected by the map model.
7663  *
7664  * The returned items must conform to the item type of the model they are
7665  * used with.
7666  *
7667  * Params:
7668  *     item = The item to map
7669  *     userData = user data
7670  *
7671  * Returns: The item to map to
7672  */
7673 public alias extern(C) void* function(void* item, void* userData) GtkMapListModelMapFunc;
7674 
7675 /**
7676  * User-provided callback function to create a popup for a
7677  * `GtkMenuButton` on demand.
7678  *
7679  * This function is called when the popup of @menu_button is shown,
7680  * but none has been provided via [method@Gtk.MenuButton.set_popover]
7681  * or [method@Gtk.MenuButton.set_menu_model].
7682  *
7683  * Params:
7684  *     menuButton = the `GtkMenuButton`
7685  *     userData = User data passed to gtk_menu_button_set_create_popup_func()
7686  */
7687 public alias extern(C) void function(GtkMenuButton* menuButton, void* userData) GtkMenuButtonCreatePopupFunc;
7688 
7689 /**
7690  * The type of function that is passed to
7691  * gtk_print_run_page_setup_dialog_async().
7692  *
7693  * This function will be called when the page setup dialog
7694  * is dismissed, and also serves as destroy notify for @data.
7695  *
7696  * Params:
7697  *     pageSetup = the `GtkPageSetup` that has been passed to
7698  *         gtk_print_run_page_setup_dialog_async()
7699  *     data = user data that has been passed to
7700  *         gtk_print_run_page_setup_dialog_async()
7701  */
7702 public alias extern(C) void function(GtkPageSetup* pageSetup, void* data) GtkPageSetupDoneFunc;
7703 
7704 /**
7705  * The type of callback that is passed to gtk_print_job_send().
7706  *
7707  * It is called when the print job has been completely sent.
7708  *
7709  * Params:
7710  *     printJob = the `GtkPrintJob`
7711  *     userData = user data that has been passed to gtk_print_job_send()
7712  *     error = a `GError` that contains error information if the sending
7713  *         of the print job failed, otherwise %NULL
7714  */
7715 public alias extern(C) void function(GtkPrintJob* printJob, void* userData, GError* error) GtkPrintJobCompleteFunc;
7716 
7717 /** */
7718 public alias extern(C) void function(const(char)* key, const(char)* value, void* userData) GtkPrintSettingsFunc;
7719 
7720 /**
7721  * The type of function passed to gtk_enumerate_printers().
7722  *
7723  * Note that you need to ref @printer, if you want to keep
7724  * a reference to it after the function has returned.
7725  *
7726  * Params:
7727  *     printer = a `GtkPrinter`
7728  *     data = user data passed to gtk_enumerate_printers()
7729  *
7730  * Returns: %TRUE to stop the enumeration, %FALSE to continue
7731  */
7732 public alias extern(C) int function(GtkPrinter* printer, void* data) GtkPrinterFunc;
7733 
7734 /**
7735  *
7736  * Params:
7737  *     scale = The `GtkScale`
7738  *     value = The numeric value to format
7739  *     userData = user data
7740  * Returns: A newly allocated string describing a textual representation
7741  *     of the given numerical value.
7742  */
7743 public alias extern(C) char* function(GtkScale* scale, double value, void* userData) GtkScaleFormatValueFunc;
7744 
7745 /**
7746  * Prototype for shortcuts based on user callbacks.
7747  *
7748  * Params:
7749  *     widget = The widget passed to the activation
7750  *     args = The arguments passed to the activation
7751  *     userData = The user data provided when activating the action
7752  *
7753  * Returns: %TRUE if the action was successful.
7754  */
7755 public alias extern(C) int function(GtkWidget* widget, GVariant* args, void* userData) GtkShortcutFunc;
7756 
7757 /**
7758  * The predicate function used by gtk_text_iter_forward_find_char() and
7759  * gtk_text_iter_backward_find_char().
7760  *
7761  * Params:
7762  *     ch = a Unicode code point
7763  *     userData = data passed to the callback
7764  *
7765  * Returns: %TRUE if the predicate is satisfied, and the iteration should
7766  *     stop, and %FALSE otherwise
7767  */
7768 public alias extern(C) int function(dchar ch, void* userData) GtkTextCharPredicate;
7769 
7770 /**
7771  * A function used with gtk_text_tag_table_foreach(),
7772  * to iterate over every `GtkTextTag` inside a `GtkTextTagTable`.
7773  *
7774  * Params:
7775  *     tag = the `GtkTextTag`
7776  *     data = data passed to gtk_text_tag_table_foreach()
7777  */
7778 public alias extern(C) void function(GtkTextTag* tag, void* data) GtkTextTagTableForeach;
7779 
7780 /**
7781  * Callback type for adding a function to update animations. See gtk_widget_add_tick_callback().
7782  *
7783  * Params:
7784  *     widget = the widget
7785  *     frameClock = the frame clock for the widget (same as calling gtk_widget_get_frame_clock())
7786  *     userData = user data passed to gtk_widget_add_tick_callback().
7787  *
7788  * Returns: %G_SOURCE_CONTINUE if the tick callback should continue to be called,
7789  *     %G_SOURCE_REMOVE if the tick callback should be removed.
7790  */
7791 public alias extern(C) int function(GtkWidget* widget, GdkFrameClock* frameClock, void* userData) GtkTickCallback;
7792 
7793 /**
7794  * A function to set the properties of a cell instead of just using the
7795  * straight mapping between the cell and the model.
7796  *
7797  * This function is useful for customizing the cell renderer. For example,
7798  * a function might get an* integer from the @tree_model, and render it to
7799  * the “text” attribute of “cell” by converting it to its written equivalent.
7800  *
7801  * See also: gtk_tree_view_column_set_cell_data_func()
7802  *
7803  * Params:
7804  *     treeColumn = A `GtkTreeViewColumn`
7805  *     cell = The `GtkCellRenderer` that is being rendered by @tree_column
7806  *     treeModel = The `GtkTreeModel` being rendered
7807  *     iter = A `GtkTreeIter` of the current row rendered
7808  *     data = user data
7809  */
7810 public alias extern(C) void function(GtkTreeViewColumn* treeColumn, GtkCellRenderer* cell, GtkTreeModel* treeModel, GtkTreeIter* iter, void* data) GtkTreeCellDataFunc;
7811 
7812 /**
7813  * A GtkTreeIterCompareFunc should return a negative integer, zero, or a positive
7814  * integer if @a sorts before @b, @a sorts with @b, or @a sorts after @b
7815  * respectively.
7816  *
7817  * If two iters compare as equal, their order in the sorted model
7818  * is undefined. In order to ensure that the `GtkTreeSortable` behaves as
7819  * expected, the GtkTreeIterCompareFunc must define a partial order on
7820  * the model, i.e. it must be reflexive, antisymmetric and transitive.
7821  *
7822  * For example, if @model is a product catalogue, then a compare function
7823  * for the “price” column could be one which returns
7824  * `price_of(@a) - price_of(@b)`.
7825  *
7826  * Params:
7827  *     model = The `GtkTreeModel` the comparison is within
7828  *     a = A `GtkTreeIter` in @model
7829  *     b = Another `GtkTreeIter` in @model
7830  *     userData = Data passed when the compare func is assigned e.g. by
7831  *         gtk_tree_sortable_set_sort_func()
7832  *
7833  * Returns: a negative integer, zero or a positive integer depending on whether
7834  *     @a sorts before, with or after @b
7835  */
7836 public alias extern(C) int function(GtkTreeModel* model, GtkTreeIter* a, GtkTreeIter* b, void* userData) GtkTreeIterCompareFunc;
7837 
7838 /**
7839  * Prototype of the function called to create new child models when
7840  * gtk_tree_list_row_set_expanded() is called.
7841  *
7842  * This function can return %NULL to indicate that @item is guaranteed to be
7843  * a leaf node and will never have children. If it does not have children but
7844  * may get children later, it should return an empty model that is filled once
7845  * children arrive.
7846  *
7847  * Params:
7848  *     item = The item that is being expanded
7849  *     userData = User data passed when registering the function
7850  *
7851  * Returns: The model tracking the children of
7852  *     @item or %NULL if @item can never have children
7853  */
7854 public alias extern(C) GListModel* function(void* item, void* userData) GtkTreeListModelCreateModelFunc;
7855 
7856 /**
7857  * A function which calculates display values from raw values in the model.
7858  * It must fill @value with the display value for the column @column in the
7859  * row indicated by @iter.
7860  *
7861  * Since this function is called for each data access, it’s not a
7862  * particularly efficient operation.
7863  *
7864  * Params:
7865  *     model = the `GtkTreeModelFilter`
7866  *     iter = a `GtkTreeIter` pointing to the row whose display values are determined
7867  *     value = A `GValue` which is already initialized for
7868  *         with the correct type for the column @column.
7869  *     column = the column whose display value is determined
7870  *     data = user data given to gtk_tree_model_filter_set_modify_func()
7871  */
7872 public alias extern(C) void function(GtkTreeModel* model, GtkTreeIter* iter, GValue* value, int column, void* data) GtkTreeModelFilterModifyFunc;
7873 
7874 /**
7875  * A function which decides whether the row indicated by @iter is visible.
7876  *
7877  * Params:
7878  *     model = the child model of the `GtkTreeModelFilter`
7879  *     iter = a `GtkTreeIter` pointing to the row in @model whose visibility
7880  *         is determined
7881  *     data = user data given to gtk_tree_model_filter_set_visible_func()
7882  *
7883  * Returns: Whether the row indicated by @iter is visible.
7884  */
7885 public alias extern(C) int function(GtkTreeModel* model, GtkTreeIter* iter, void* data) GtkTreeModelFilterVisibleFunc;
7886 
7887 /**
7888  * Type of the callback passed to gtk_tree_model_foreach() to
7889  * iterate over the rows in a tree model.
7890  *
7891  * Params:
7892  *     model = the `GtkTreeModel` being iterated
7893  *     path = the current `GtkTreePath`
7894  *     iter = the current `GtkTreeIter`
7895  *     data = The user data passed to gtk_tree_model_foreach()
7896  *
7897  * Returns: %TRUE to stop iterating, %FALSE to continue
7898  */
7899 public alias extern(C) int function(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, void* data) GtkTreeModelForeachFunc;
7900 
7901 /**
7902  * A function used by gtk_tree_selection_selected_foreach() to map all
7903  * selected rows.  It will be called on every selected row in the view.
7904  *
7905  * Params:
7906  *     model = The `GtkTreeModel` being viewed
7907  *     path = The `GtkTreePath` of a selected row
7908  *     iter = A `GtkTreeIter` pointing to a selected row
7909  *     data = user data
7910  */
7911 public alias extern(C) void function(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, void* data) GtkTreeSelectionForeachFunc;
7912 
7913 /**
7914  * A function used by gtk_tree_selection_set_select_function() to filter
7915  * whether or not a row may be selected. It is called whenever a row's
7916  * state might change.
7917  *
7918  * A return value of %TRUE indicates to @selection that it is okay to
7919  * change the selection.
7920  *
7921  * Params:
7922  *     selection = A `GtkTreeSelection`
7923  *     model = A `GtkTreeModel` being viewed
7924  *     path = The `GtkTreePath` of the row in question
7925  *     pathCurrentlySelected = %TRUE, if the path is currently selected
7926  *     data = user data
7927  *
7928  * Returns: %TRUE, if the selection state of the row can be toggled
7929  */
7930 public alias extern(C) int function(GtkTreeSelection* selection, GtkTreeModel* model, GtkTreePath* path, int pathCurrentlySelected, void* data) GtkTreeSelectionFunc;
7931 
7932 /**
7933  * Function type for determining whether @column can be dropped in a
7934  * particular spot (as determined by @prev_column and @next_column).  In
7935  * left to right locales, @prev_column is on the left of the potential drop
7936  * spot, and @next_column is on the right.  In right to left mode, this is
7937  * reversed.  This function should return %TRUE if the spot is a valid drop
7938  * spot.  Please note that returning %TRUE does not actually indicate that
7939  * the column drop was made, but is meant only to indicate a possible drop
7940  * spot to the user.
7941  *
7942  * Params:
7943  *     treeView = A `GtkTreeView`
7944  *     column = The `GtkTreeViewColumn` being dragged
7945  *     prevColumn = A `GtkTreeViewColumn` on one side of @column
7946  *     nextColumn = A `GtkTreeViewColumn` on the other side of @column
7947  *     data = user data
7948  *
7949  * Returns: %TRUE, if @column can be dropped in this spot
7950  */
7951 public alias extern(C) int function(GtkTreeView* treeView, GtkTreeViewColumn* column, GtkTreeViewColumn* prevColumn, GtkTreeViewColumn* nextColumn, void* data) GtkTreeViewColumnDropFunc;
7952 
7953 /**
7954  * Function used for gtk_tree_view_map_expanded_rows().
7955  *
7956  * Params:
7957  *     treeView = A `GtkTreeView`
7958  *     path = The path that’s expanded
7959  *     userData = user data
7960  */
7961 public alias extern(C) void function(GtkTreeView* treeView, GtkTreePath* path, void* userData) GtkTreeViewMappingFunc;
7962 
7963 /**
7964  * Function type for determining whether the row pointed to by @iter should
7965  * be rendered as a separator. A common way to implement this is to have a
7966  * boolean column in the model, whose values the `GtkTreeViewRowSeparatorFunc`
7967  * returns.
7968  *
7969  * Params:
7970  *     model = the `GtkTreeModel`
7971  *     iter = a `GtkTreeIter` pointing at a row in @model
7972  *     data = user data
7973  *
7974  * Returns: %TRUE if the row is a separator
7975  */
7976 public alias extern(C) int function(GtkTreeModel* model, GtkTreeIter* iter, void* data) GtkTreeViewRowSeparatorFunc;
7977 
7978 /**
7979  * A function used for checking whether a row in @model matches
7980  * a search key string entered by the user. Note the return value
7981  * is reversed from what you would normally expect, though it
7982  * has some similarity to strcmp() returning 0 for equal strings.
7983  *
7984  * Params:
7985  *     model = the `GtkTreeModel` being searched
7986  *     column = the search column set by gtk_tree_view_set_search_column()
7987  *     key = the key string to compare with
7988  *     iter = a `GtkTreeIter` pointing the row of @model that should be compared
7989  *         with @key.
7990  *     searchData = user data from gtk_tree_view_set_search_equal_func()
7991  *
7992  * Returns: %FALSE if the row matches, %TRUE otherwise.
7993  */
7994 public alias extern(C) int function(GtkTreeModel* model, int column, const(char)* key, GtkTreeIter* iter, void* searchData) GtkTreeViewSearchEqualFunc;
7995 
7996 /**
7997  * The type of the callback functions used for activating
7998  * actions installed with gtk_widget_class_install_action().
7999  *
8000  * The @parameter must match the @parameter_type of the action.
8001  *
8002  * Params:
8003  *     widget = the widget to which the action belongs
8004  *     actionName = the action name
8005  *     parameter = parameter for activation
8006  */
8007 public alias extern(C) void function(GtkWidget* widget, const(char)* actionName, GVariant* parameter) GtkWidgetActionActivateFunc;
8008 
8009 /**
8010  * An undefined value. The accessible attribute is either unset, or its
8011  * value is undefined.
8012  */
8013 enum ACCESSIBLE_VALUE_UNDEFINED = -1;
8014 alias GTK_ACCESSIBLE_VALUE_UNDEFINED = ACCESSIBLE_VALUE_UNDEFINED;
8015 
8016 /**
8017  * Like [func@get_binary_age], but from the headers used at
8018  * application compile time, rather than from the library linked
8019  * against at application run time.
8020  */
8021 enum BINARY_AGE = 604;
8022 alias GTK_BINARY_AGE = BINARY_AGE;
8023 
8024 enum IM_MODULE_EXTENSION_POINT_NAME = "gtk-im-module";
8025 alias GTK_IM_MODULE_EXTENSION_POINT_NAME = IM_MODULE_EXTENSION_POINT_NAME;
8026 
8027 /**
8028  * Constant to return from a signal handler for the ::input
8029  * signal in case of conversion failure.
8030  *
8031  * See [signal@Gtk.SpinButton::input].
8032  */
8033 enum INPUT_ERROR = -1;
8034 alias GTK_INPUT_ERROR = INPUT_ERROR;
8035 
8036 /**
8037  * Like [func@get_interface_age], but from the headers used at
8038  * application compile time, rather than from the library linked
8039  * against at application run time.
8040  */
8041 enum INTERFACE_AGE = 4;
8042 alias GTK_INTERFACE_AGE = INTERFACE_AGE;
8043 
8044 /**
8045  * The value used to refer to a guaranteed invalid position
8046  * in a `GListModel`.
8047  *
8048  * This value may be returned from some functions, others may
8049  * accept it as input. Its interpretation may differ for different
8050  * functions.
8051  *
8052  * Refer to each function's documentation for if this value is
8053  * allowed and what it does.
8054  */
8055 enum INVALID_LIST_POSITION = 4294967295;
8056 alias GTK_INVALID_LIST_POSITION = INVALID_LIST_POSITION;
8057 
8058 /**
8059  * The name used for the stock full offset included by `GtkLevelBar`.
8060  */
8061 enum LEVEL_BAR_OFFSET_FULL = "full";
8062 alias GTK_LEVEL_BAR_OFFSET_FULL = LEVEL_BAR_OFFSET_FULL;
8063 
8064 /**
8065  * The name used for the stock high offset included by `GtkLevelBar`.
8066  */
8067 enum LEVEL_BAR_OFFSET_HIGH = "high";
8068 alias GTK_LEVEL_BAR_OFFSET_HIGH = LEVEL_BAR_OFFSET_HIGH;
8069 
8070 /**
8071  * The name used for the stock low offset included by `GtkLevelBar`.
8072  */
8073 enum LEVEL_BAR_OFFSET_LOW = "low";
8074 alias GTK_LEVEL_BAR_OFFSET_LOW = LEVEL_BAR_OFFSET_LOW;
8075 
8076 /**
8077  * Like [func@get_major_version], but from the headers used at
8078  * application compile time, rather than from the library linked
8079  * against at application run time.
8080  */
8081 enum MAJOR_VERSION = 4;
8082 alias GTK_MAJOR_VERSION = MAJOR_VERSION;
8083 
8084 enum MAX_COMPOSE_LEN = 7;
8085 alias GTK_MAX_COMPOSE_LEN = MAX_COMPOSE_LEN;
8086 
8087 enum MEDIA_FILE_EXTENSION_POINT_NAME = "gtk-media-file";
8088 alias GTK_MEDIA_FILE_EXTENSION_POINT_NAME = MEDIA_FILE_EXTENSION_POINT_NAME;
8089 
8090 /**
8091  * Like [func@get_micro_version], but from the headers used at
8092  * application compile time, rather than from the library linked
8093  * against at application run time.
8094  */
8095 enum MICRO_VERSION = 4;
8096 alias GTK_MICRO_VERSION = MICRO_VERSION;
8097 
8098 /**
8099  * Like [func@get_minor_version], but from the headers used at
8100  * application compile time, rather than from the library linked
8101  * against at application run time.
8102  */
8103 enum MINOR_VERSION = 6;
8104 alias GTK_MINOR_VERSION = MINOR_VERSION;
8105 
8106 /**
8107  * Name for the A3 paper size.
8108  */
8109 enum PAPER_NAME_A3 = "iso_a3";
8110 alias GTK_PAPER_NAME_A3 = PAPER_NAME_A3;
8111 
8112 /**
8113  * Name for the A4 paper size.
8114  */
8115 enum PAPER_NAME_A4 = "iso_a4";
8116 alias GTK_PAPER_NAME_A4 = PAPER_NAME_A4;
8117 
8118 /**
8119  * Name for the A5 paper size.
8120  */
8121 enum PAPER_NAME_A5 = "iso_a5";
8122 alias GTK_PAPER_NAME_A5 = PAPER_NAME_A5;
8123 
8124 /**
8125  * Name for the B5 paper size.
8126  */
8127 enum PAPER_NAME_B5 = "iso_b5";
8128 alias GTK_PAPER_NAME_B5 = PAPER_NAME_B5;
8129 
8130 /**
8131  * Name for the Executive paper size.
8132  */
8133 enum PAPER_NAME_EXECUTIVE = "na_executive";
8134 alias GTK_PAPER_NAME_EXECUTIVE = PAPER_NAME_EXECUTIVE;
8135 
8136 /**
8137  * Name for the Legal paper size.
8138  */
8139 enum PAPER_NAME_LEGAL = "na_legal";
8140 alias GTK_PAPER_NAME_LEGAL = PAPER_NAME_LEGAL;
8141 
8142 /**
8143  * Name for the Letter paper size.
8144  */
8145 enum PAPER_NAME_LETTER = "na_letter";
8146 alias GTK_PAPER_NAME_LETTER = PAPER_NAME_LETTER;
8147 
8148 enum PRINT_SETTINGS_COLLATE = "collate";
8149 alias GTK_PRINT_SETTINGS_COLLATE = PRINT_SETTINGS_COLLATE;
8150 
8151 enum PRINT_SETTINGS_DEFAULT_SOURCE = "default-source";
8152 alias GTK_PRINT_SETTINGS_DEFAULT_SOURCE = PRINT_SETTINGS_DEFAULT_SOURCE;
8153 
8154 enum PRINT_SETTINGS_DITHER = "dither";
8155 alias GTK_PRINT_SETTINGS_DITHER = PRINT_SETTINGS_DITHER;
8156 
8157 enum PRINT_SETTINGS_DUPLEX = "duplex";
8158 alias GTK_PRINT_SETTINGS_DUPLEX = PRINT_SETTINGS_DUPLEX;
8159 
8160 enum PRINT_SETTINGS_FINISHINGS = "finishings";
8161 alias GTK_PRINT_SETTINGS_FINISHINGS = PRINT_SETTINGS_FINISHINGS;
8162 
8163 enum PRINT_SETTINGS_MEDIA_TYPE = "media-type";
8164 alias GTK_PRINT_SETTINGS_MEDIA_TYPE = PRINT_SETTINGS_MEDIA_TYPE;
8165 
8166 enum PRINT_SETTINGS_NUMBER_UP = "number-up";
8167 alias GTK_PRINT_SETTINGS_NUMBER_UP = PRINT_SETTINGS_NUMBER_UP;
8168 
8169 enum PRINT_SETTINGS_NUMBER_UP_LAYOUT = "number-up-layout";
8170 alias GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT = PRINT_SETTINGS_NUMBER_UP_LAYOUT;
8171 
8172 enum PRINT_SETTINGS_N_COPIES = "n-copies";
8173 alias GTK_PRINT_SETTINGS_N_COPIES = PRINT_SETTINGS_N_COPIES;
8174 
8175 enum PRINT_SETTINGS_ORIENTATION = "orientation";
8176 alias GTK_PRINT_SETTINGS_ORIENTATION = PRINT_SETTINGS_ORIENTATION;
8177 
8178 /**
8179  * The key used by the “Print to file” printer to store the file
8180  * name of the output without the path to the directory and the
8181  * file extension.
8182  */
8183 enum PRINT_SETTINGS_OUTPUT_BASENAME = "output-basename";
8184 alias GTK_PRINT_SETTINGS_OUTPUT_BASENAME = PRINT_SETTINGS_OUTPUT_BASENAME;
8185 
8186 enum PRINT_SETTINGS_OUTPUT_BIN = "output-bin";
8187 alias GTK_PRINT_SETTINGS_OUTPUT_BIN = PRINT_SETTINGS_OUTPUT_BIN;
8188 
8189 /**
8190  * The key used by the “Print to file” printer to store the
8191  * directory to which the output should be written.
8192  */
8193 enum PRINT_SETTINGS_OUTPUT_DIR = "output-dir";
8194 alias GTK_PRINT_SETTINGS_OUTPUT_DIR = PRINT_SETTINGS_OUTPUT_DIR;
8195 
8196 /**
8197  * The key used by the “Print to file” printer to store the format
8198  * of the output. The supported values are “PS” and “PDF”.
8199  */
8200 enum PRINT_SETTINGS_OUTPUT_FILE_FORMAT = "output-file-format";
8201 alias GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT = PRINT_SETTINGS_OUTPUT_FILE_FORMAT;
8202 
8203 /**
8204  * The key used by the “Print to file” printer to store the URI
8205  * to which the output should be written. GTK itself supports
8206  * only “file://” URIs.
8207  */
8208 enum PRINT_SETTINGS_OUTPUT_URI = "output-uri";
8209 alias GTK_PRINT_SETTINGS_OUTPUT_URI = PRINT_SETTINGS_OUTPUT_URI;
8210 
8211 enum PRINT_SETTINGS_PAGE_RANGES = "page-ranges";
8212 alias GTK_PRINT_SETTINGS_PAGE_RANGES = PRINT_SETTINGS_PAGE_RANGES;
8213 
8214 enum PRINT_SETTINGS_PAGE_SET = "page-set";
8215 alias GTK_PRINT_SETTINGS_PAGE_SET = PRINT_SETTINGS_PAGE_SET;
8216 
8217 enum PRINT_SETTINGS_PAPER_FORMAT = "paper-format";
8218 alias GTK_PRINT_SETTINGS_PAPER_FORMAT = PRINT_SETTINGS_PAPER_FORMAT;
8219 
8220 enum PRINT_SETTINGS_PAPER_HEIGHT = "paper-height";
8221 alias GTK_PRINT_SETTINGS_PAPER_HEIGHT = PRINT_SETTINGS_PAPER_HEIGHT;
8222 
8223 enum PRINT_SETTINGS_PAPER_WIDTH = "paper-width";
8224 alias GTK_PRINT_SETTINGS_PAPER_WIDTH = PRINT_SETTINGS_PAPER_WIDTH;
8225 
8226 enum PRINT_SETTINGS_PRINTER = "printer";
8227 alias GTK_PRINT_SETTINGS_PRINTER = PRINT_SETTINGS_PRINTER;
8228 
8229 enum PRINT_SETTINGS_PRINTER_LPI = "printer-lpi";
8230 alias GTK_PRINT_SETTINGS_PRINTER_LPI = PRINT_SETTINGS_PRINTER_LPI;
8231 
8232 enum PRINT_SETTINGS_PRINT_PAGES = "print-pages";
8233 alias GTK_PRINT_SETTINGS_PRINT_PAGES = PRINT_SETTINGS_PRINT_PAGES;
8234 
8235 enum PRINT_SETTINGS_QUALITY = "quality";
8236 alias GTK_PRINT_SETTINGS_QUALITY = PRINT_SETTINGS_QUALITY;
8237 
8238 enum PRINT_SETTINGS_RESOLUTION = "resolution";
8239 alias GTK_PRINT_SETTINGS_RESOLUTION = PRINT_SETTINGS_RESOLUTION;
8240 
8241 enum PRINT_SETTINGS_RESOLUTION_X = "resolution-x";
8242 alias GTK_PRINT_SETTINGS_RESOLUTION_X = PRINT_SETTINGS_RESOLUTION_X;
8243 
8244 enum PRINT_SETTINGS_RESOLUTION_Y = "resolution-y";
8245 alias GTK_PRINT_SETTINGS_RESOLUTION_Y = PRINT_SETTINGS_RESOLUTION_Y;
8246 
8247 enum PRINT_SETTINGS_REVERSE = "reverse";
8248 alias GTK_PRINT_SETTINGS_REVERSE = PRINT_SETTINGS_REVERSE;
8249 
8250 enum PRINT_SETTINGS_SCALE = "scale";
8251 alias GTK_PRINT_SETTINGS_SCALE = PRINT_SETTINGS_SCALE;
8252 
8253 enum PRINT_SETTINGS_USE_COLOR = "use-color";
8254 alias GTK_PRINT_SETTINGS_USE_COLOR = PRINT_SETTINGS_USE_COLOR;
8255 
8256 enum PRINT_SETTINGS_WIN32_DRIVER_EXTRA = "win32-driver-extra";
8257 alias GTK_PRINT_SETTINGS_WIN32_DRIVER_EXTRA = PRINT_SETTINGS_WIN32_DRIVER_EXTRA;
8258 
8259 enum PRINT_SETTINGS_WIN32_DRIVER_VERSION = "win32-driver-version";
8260 alias GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION = PRINT_SETTINGS_WIN32_DRIVER_VERSION;
8261 
8262 /**
8263  * Use this priority for functionality related to size allocation.
8264  *
8265  * It is used internally by GTK+ to compute the sizes of widgets.
8266  * This priority is higher than %GDK_PRIORITY_REDRAW to avoid
8267  * resizing a widget which was just redrawn.
8268  */
8269 enum PRIORITY_RESIZE = 110;
8270 alias GTK_PRIORITY_RESIZE = PRIORITY_RESIZE;
8271 
8272 /**
8273  * A priority that can be used when adding a `GtkStyleProvider`
8274  * for application-specific style information.
8275  */
8276 enum STYLE_PROVIDER_PRIORITY_APPLICATION = 600;
8277 alias GTK_STYLE_PROVIDER_PRIORITY_APPLICATION = STYLE_PROVIDER_PRIORITY_APPLICATION;
8278 
8279 /**
8280  * The priority used for default style information
8281  * that is used in the absence of themes.
8282  *
8283  * Note that this is not very useful for providing default
8284  * styling for custom style classes - themes are likely to
8285  * override styling provided at this priority with
8286  * catch-all `* {...}` rules.
8287  */
8288 enum STYLE_PROVIDER_PRIORITY_FALLBACK = 1;
8289 alias GTK_STYLE_PROVIDER_PRIORITY_FALLBACK = STYLE_PROVIDER_PRIORITY_FALLBACK;
8290 
8291 /**
8292  * The priority used for style information provided
8293  * via `GtkSettings`.
8294  *
8295  * This priority is higher than %GTK_STYLE_PROVIDER_PRIORITY_THEME
8296  * to let settings override themes.
8297  */
8298 enum STYLE_PROVIDER_PRIORITY_SETTINGS = 400;
8299 alias GTK_STYLE_PROVIDER_PRIORITY_SETTINGS = STYLE_PROVIDER_PRIORITY_SETTINGS;
8300 
8301 /**
8302  * The priority used for style information provided
8303  * by themes.
8304  */
8305 enum STYLE_PROVIDER_PRIORITY_THEME = 200;
8306 alias GTK_STYLE_PROVIDER_PRIORITY_THEME = STYLE_PROVIDER_PRIORITY_THEME;
8307 
8308 /**
8309  * The priority used for the style information from
8310  * `$XDG_CONFIG_HOME/gtk-4.0/gtk.css`.
8311  *
8312  * You should not use priorities higher than this, to
8313  * give the user the last word.
8314  */
8315 enum STYLE_PROVIDER_PRIORITY_USER = 800;
8316 alias GTK_STYLE_PROVIDER_PRIORITY_USER = STYLE_PROVIDER_PRIORITY_USER;
8317 
8318 /**
8319  * The priority at which the text view validates onscreen lines
8320  * in an idle job in the background.
8321  */
8322 enum TEXT_VIEW_PRIORITY_VALIDATE = 125;
8323 alias GTK_TEXT_VIEW_PRIORITY_VALIDATE = TEXT_VIEW_PRIORITY_VALIDATE;
8324 
8325 /**
8326  * Uses the default sort function in a [iface@Gtk.TreeSortable].
8327  *
8328  * See also: [method@Gtk.TreeSortable.set_sort_column_id]
8329  */
8330 enum TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID = -1;
8331 alias GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID = TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID;
8332 
8333 /**
8334  * Disables sorting in a [iface@Gtk.TreeSortable].
8335  *
8336  * See also: [method@Gtk.TreeSortable.set_sort_column_id]
8337  */
8338 enum TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID = -2;
8339 alias GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID = TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID;